Избегайте двух знаков «@» в адресе электронной почты при использовании \ P {M} в регулярном выражении - PullRequest
0 голосов
/ 27 февраля 2012

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

я использую \P{M} код, который в основном позволяет вставлять любой код Unicode. Проблема в том, что ..... я, конечно, хочу только 1 '@' (в), как в соответствии со стандартным синтаксисом для адресов электронной почты. Как я могу избежать этого? Это RegEx, у меня до сих пор:

input.matches("\\P{M}+@{1}\\P{M}+\\.[a-zA-Z]{2,6}$");

Спасибо за любой совет, я пробовал много разных комбинаций, но пока ничего.

Спасибо

1 Ответ

0 голосов
/ 27 февраля 2012
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

http://www.regular -expressions.info / email.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...