Email Regex валидация - PullRequest
       9

Email Regex валидация

1 голос
/ 01 октября 2019

Как я могу ограничить только цифры в адресе электронной почты. Я попробовал ниже, и это не сработало. Мой адрес электронной почты должен принимать буквенно-цифровые цифры, точки, дефисы и подчеркивания, за которыми следует "@ AnyDomain.com" . Но он не должен принимать только цифры, такие как "112233@gmail.com"

Pattern regexPattern = Pattern.compile("^[(a-zA-Z0-9-\\_\\.!\\D)]+@[(a-zA-Z)]+\\.[(a-zA-Z)]{2,3}$");
Matcher regmatcher = regexPattern.matcher(email);
  • Don_123@gmail.com -> Действительный
  • 12345 @ gmail.com -> Неверно

Ответы [ 4 ]

1 голос
/ 01 октября 2019

Вы можете использовать это регулярное выражение для подтверждения вашего условия

^\w*?[a-zA-Z]\w+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z

регулярное выражение для подтверждения вышеуказанного условия.

0 голосов
/ 01 октября 2019

Регулярное выражение ниже работает для меня каждый раз для проверки электронной почты. Однако это может решить не все случаи, поскольку электронные письма принимают целый ряд символов и, в последнее время, разные форматы. Если вы используете электронную почту для аутентификации, я бы посоветовал вам отправить подтверждающее электронное письмо, чтобы подтвердить или добавить дополнительный режим аутентификации.

/^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

В основном, сила проверкиРегулярное выражение заключается в количестве случаев, которые оно может точно зафиксировать при одновременной проверке на несоответствие (подделка). Каждая из этих последовательностей символов имеет цель в общем процессе проверки. Вы можете узнать больше о регулярных выражениях здесь .

Надеюсь, это поможет. Веселого кодирования!

0 голосов
/ 01 октября 2019

Использование регулярных выражений для электронной почты может быть проблематичным. Электронные письма не так просты, как вы думаете - в них много допустимых символов. В идеале вы должны позволить браузеру сделать это input[type="email"] и отправить своим пользователям электронное письмо для активации, чтобы доказать, что адрес электронной почты действителен, но я понимаю, что может возникнуть обоснованная необходимость в проверке адреса на сервере.

Здесь есть полезная информация: https://stackoverflow.com/a/201378/1921385

Все еще нужен rx?

Согласно https://emailregex.com/ регулярному выражению, используемому W3C для проверки input[type=email] - это:

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

Таким образом, вы можете использовать это и просто убрать номерную часть:

/^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

Играйте на regex101.com

Вот демоверсия:

input {border:10px solid red;}
input:valid {border-color:green;}
<input type="text" required="required" pattern="^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" placeholder="type=text, using a pattern" />
<input type="email" required="required" placeholder="type=email, no pattern here" />
0 голосов
/ 01 октября 2019

Я изменил регулярное выражение, указанное в вопросе.

[a-zA-Z]+[(a-zA-Z0-9-\\_\\.!\\D)]*[(a-zA-Z0-9)]+@[(a-zA-Z)]+\.[(a-zA-Z)]{2,3}

В начале я добавил [a-zA-Z] +, чтобы адрес электронной почты не начинался с цифр. Если адрес электронной почты может начинаться со специального символа, убедитесь, что вы обновили его в первом блоке.

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