← Все вопросы
Как проверить email или телефон простой регуляркой?
10
Нужна базовая валидация: пользователь ввёл email и телефон, хочу хотя бы грубо проверить, что это похоже на правду. Какой паттерн взять для новичка?
3 ответа
17
✓ Принятый ответ — помог автору
Для учебных целей хватает простого паттерна с re.fullmatch (он требует, чтобы совпала ВСЯ строка):
import re
email = '[email protected]'
if re.fullmatch(r'[\w.-]+@[\w-]+\.[a-zA-Z]{2,}', email):
print('похоже на email')
phone = '+79991234567'
if re.fullmatch(r'\+?\d{10,15}', phone):
print('похоже на телефон')
Важно понимать: на 100% провалидировать email регуляркой нереально (стандарт жуткий). В реальном проекте проверку email обычно делают отправкой письма с подтверждением, а не идеальным паттерном.
Светлана Петровна для телефона лучше сначала убрать пробелы/скобки/дефисы через re.sub, а потом матчить · 17 месяцев назад
8
Для телефона удобно сначала почистить: digits = re.sub(r'\D', '', phone) — оставит только цифры, дальше проверяй длину.
-2
проверяй просто наличие '@' в строке и всё
Игорь Попов '@@@' тоже пройдёт, так себе проверка · 17 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.