Проверка номера телефона через регулярные выражения

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
У меня есть строка, в которой хранится номер телефона. Мне надо проверить, соответствует ли данная строка регулярному вырежению ^((\+?7|8)[ \-] ?)?((\(\d{3}\))|(\d{3}))?([ \-])?(\d{3}[\- ]?\d{2}[\- ]?\d{2})$
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 639
472
83
Python:
import re

a = '8-900-800-10-20'
r = re.compile('^((\+?7|8)[ \-] ?)?((\(\d{3}\))|(\d{3}))?([ \-])?(\d{3}[\- ]?\d{2}[\- ]?\d{2})$')

if r.search(a):
    print('соответствует')
else:
    print('не соответствует')
 

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
Python:
import re

a = '8-900-800-10-20'
r = re.compile('^((\+?7|8)[ \-] ?)?((\(\d{3}\))|(\d{3}))?([ \-])?(\d{3}[\- ]?\d{2}[\- ]?\d{2})$')

if r.search(a):
    print('соответствует')
else:
    print('не соответствует')
А данная регулярка подходит для проверки номера в python? Я ввожу 8916202 и у меня всё принимается
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 639
472
83
А данная регулярка подходит для проверки номера в python? Я ввожу 8916202 и у меня всё принимается
это проблема с регуляркой...
попробуйте такую
Код:
r = re.compile('^\+7|8\D*\d{3}\D*\d{3}\D*\d{2}\D*\d{2}')
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 639
472
83
вот такая лучше
Python:
r = re.compile('(\+7|8)\D*\d{3}\D*\d{3}\D*\d{2}\D*\d{2}')
 

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
Всё получилось, спасибо. А регулярку для номера авто не подскажите?
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 639
472
83
вам нужно написать регулярку просто...
обратитесь к документации https://docs.python.org/3/library/re.html
 

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
вам нужно написать регулярку просто...
обратитесь к документации https://docs.python.org/3/library/re.html
Всё получилось, спасибо. А регулярку для номера авто не подскажите?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 639
472
83
так можно
Python:
r = re.compile('[а-я]{1}\d{3}[а-я]{2}\d{2}[а-я]{3}')
в номерах не все буквы используются вроде, можно в квадратных скобках их указать вместо а-я...
 

Форум IT Специалистов