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

Я использую гобелен 4 в своем веб-приложении. У меня есть гобелен, проверяющий поле моего адреса электронной почты. Согласно гобеленовой документации, он использует регулярное выражение для проверки адресов электронной почты.

^\w[-._\w]*\w@\w[-._\w]*\w\.\w2,6$

Но когда я ввожу адрес электронной почты, который заканчивается на .cat или что-то подобное, проверка выдает ошибку и не сохраняет адрес электронной почты.

Кто-нибудь знает, почему это происходит, поскольку я не знаком с регулярным выражением?


person flexinIT    schedule 11.01.2013    source источник
comment
Это похоже на ошибку: похоже, что он будет принимать только существующие TLD, независимо от того факта, что электронная почта действительна в соответствии с RFC 5322. a@b также действителен, и, кстати, это приведет к сбою их регулярного выражения.   -  person fge    schedule 11.01.2013
comment
просто из любопытства, вы знаете, какие адреса это позволит? или это только домены верхнего уровня com, info, net и org и код страны?   -  person flexinIT    schedule 11.01.2013
comment
Я думаю, вы можете использовать обычное регулярное выражение электронной почты stackoverflow.com/questions/201323/   -  person Oscar Castiblanco    schedule 11.01.2013
comment
@flexinIT Понятия не имею. Я бы рекомендовал использовать API javax.mail и использовать `new InternetAddress(theString, true) для проверки в любом случае. Регулярные выражения для электронной почты просто бесполезны.   -  person fge    schedule 11.01.2013
comment
@fge: спасибо за помощь, я попробую javax.mail и посмотрю, как это работает ... спасибо :)   -  person flexinIT    schedule 11.01.2013
comment
Если домены электронной почты .com работают, а .cat нет, то это проблема с валидатором, который используется после этого регулярного выражения, потому что это регулярное выражение не различает .cat и .com.   -  person RokL    schedule 11.01.2013


Ответы (1)


Я думаю, что документация, которую вы упомянули, может иметь некоторые проблемы с этим примером.

Правильная версия этого регулярного выражения должна быть (недалеко от данной)

^\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,6}$

Последний раздел (\w{2,6}) соответствует верхнему домену, который (согласно этому регулярному выражению) должен содержать от 2 до 6 символов.

Взгляните на эту страницу веб-сайта regex101. Очень удобно экспериментировать с вашим регулярным выражением

person Tom    schedule 11.01.2013