Шаг 1: Определение основных элементов
- Плюс в начале (опционально): \+?
- Код страны: \d{1,4}
- Круглые скобки и пробелы:
- \s?\(?\d{3}\)? для первой тройки цифр
- \s?\(?\d{2}\)? или \s?\(?\d{1}\)? для других частей (если у номера разный формат)
- Номер без разделителей: \d{6,9}
Шаг 2: Создание регулярного выражения
/^\+?\s?7\s?\(?\d{1,3}\)?[\s.-]?\d{3}[\s.-]?\d{2,4}[\s.-]?\d{2,4}$/
Пример использования в Python:
def is_valid_phone(phone):
pattern = re.compile(r'/^\+?\s?7\s?\(?\d{1,3}\)?[\s.-]?\d{3}[\s.-]?\d{2,4}[\s.-]?\d{2,4}$/')
return bool(pattern.match(phone))
phones = ['+7 (8) 495 123 456', '8 (495) 123-45-67', '7 (495) 123456']
for phone in phones:
print(f'{phone} -> {is_valid_phone(phone)}')
Пример использования в JavaScript:
function isValidPhone(phone) {
const pattern = /^\+?\s?7\s?\(?\d{1,3}\)?[\s.-]?\d{3}[\s.-]?\d{2,4}[\s.-]?\d{2,4}$/;
return pattern.test(phone);
}
const phones = ['+7 (8) 495 123 456', '8 (495) 123-45-67', '7 (495) 123456'];
phones.forEach(phone => console.log(`${phone} -> ${isValidPhone(phone)}`));