Все регулярные выражения пытаются проверить формат электронной почты на основе Латиница символы сломаны .Они не поддерживают интернационализированные доменные имена , которые были доступны с мая 2010 года. Да, вы правильно прочитали, с тех пор нелатинские символы разрешены в именах доменов и, следовательно, также в адресах электронной почты.
Таким образом, это чрезвычайно много возможных символов для проверки.Лучше просто держать это просто.Следующее регулярное выражение только проверяет формат электронной почты на основе вхождения символов @
и .
.
<f:validateRegex pattern="([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)" />
Опять же, это просто проверяет общий формат электронной почты, а не на то, является ли электронная почта самой действительной.Можно все еще ввести aa@bb.cc
в качестве адреса и пройти проверку.Никто из регулярных выражений не может это охватить.Если действительность адреса электронной почты так важна, объедините его с системой аутентификации.Просто отправьте электронное письмо с ссылкой для обратного вызова на указанный адрес электронной почты и позвольте пользователю войти в систему по адресу электронной почты.