Регулярное выражение для проверки электронной почты не работает

Ниже регулярное выражение для проверки электронной почты,

^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$

Здесь я не мог понять цель [\w\.-]. Может кто-нибудь, пожалуйста, дайте мне знать?

Используйте этот шаблон,

Если я укажу [email protected] в поле электронной почты, проверка станет неудачной. В строке электронной почты перед @, если приходит только один символ или число, проверка становится неудачной. Это правильно?

С уважением, Картик


person Karthik    schedule 23.07.2012    source источник
comment
Это для яваскрипта? Кстати, регулярное выражение выглядит неправильно для своей цели. Откуда вы это взяли? Это должно быть правильное регулярное выражение для проверки адреса электронной почты.   -  person rubber boots    schedule 23.07.2012
comment
почему люди хотят использовать регулярное выражение для проверки электронной почты? для этой задачи достаточно библиотек   -  person gaussblurinc    schedule 23.07.2012
comment
@loldop: Не могли бы вы рассказать мне о библиотеках, отличных от регулярных выражений, для проверки электронной почты?   -  person Karthik    schedule 23.07.2012
comment
@Картик, да, я могу: metacpan.org/module/Email::Valid. Это перл-решение.   -  person gaussblurinc    schedule 23.07.2012
comment
эй, посмотри мой ответ. посмотрите, работает ли это для вас   -  person Cdeez    schedule 23.07.2012


Ответы (2)


[\w.-] означает один символ, который:

  • Словесный символ (буквенно-цифровой или _)
  • .
  • -

[email protected] терпит неудачу, потому что это регулярное выражение требует как минимум 2 символа перед @.

person Max Nanasy    schedule 23.07.2012
comment
Тривиальным решением было бы изменить [\w\.-]*[a-zA-Z0-9] на ([\w.-]*[a-zA-Z0-9])?, т.е. сделать часть после первого символа необязательной (и удалить лишнюю обратную косую черту в классе символов). - person tripleee; 24.07.2012
comment
@tripleee Из первоначального вопроса я не могу сказать, желателен ли отказ от [email protected]: P. - person Max Nanasy; 24.07.2012
comment
Ах, может быть, вопрос в том, действительно ли я должен это исправить? Да, ты должен. - person tripleee; 24.07.2012

Используйте это регулярное выражение для проверки идентификатора электронной почты. У меня работает нормально

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  

Отметьте как ответ, если это сработало для вас :)

person Cdeez    schedule 23.07.2012