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

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

Я пришлю подтверждение, чтобы сделать подтверждение подтверждения .

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

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

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

Ответ 2

Можно написать регулярное выражение, которое принимает только адреса электронной почты, соответствующие стандартам. Тем не менее, есть некоторые адреса электронной почты, которые не строго соответствуют стандартам, но все еще работают.

Вот несколько простых регулярных выражений для базовой проверки:

Содержит символ @:

@

Содержит @и период где-то после него:

@.*?\.

Имеет хотя бы один символ перед @, до периода и после него:

[email protected]+\..+

Имеет только один @, по крайней мере один символ перед @, до периода и после него:

^[^@][email protected][^@]+\.[^@]+$

Пользователь AmoebaMan17 предлагает эту модификацию для устранения пробелов:

^[^@\s][email protected][^@\s]+\.[^@\s]+$

Ответ 3

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

(?!.*\.\.)(^[^\.][^@\s][email protected][^@\s]+\.[^@\s\.]+$)

Кажется, что работает (но я не RegEx-pert). Исправляет мою проблему с копиями пользователей и добавлением адресов электронной почты с конца предложений, которые заканчиваются с периодом.

i.e: Здесь мой новый адрес электронной почты [email protected]

Ответ 4

Возьмите свой выбор.

Здесь тот, который соответствует RFC 2822 Раздел 3.4.1...

(?:[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])+)\])

На всякий случай вам любопытно.:)

Ответ 5

^ [A-Za-Z0-9 _ + -.] + @[A-Za-Z0-9 -] + [A-Za-Z0-9 -.]. + $

  • Только 1 @
  • Несколько доменов и поддоменов

Ответ 6

"^\ш [^ @] * @\ш [^ @.] +.\Ш [^.] {2,4} $". Не допускается более одного периода или периода, работает до сих пор.

Кроме того, чтобы проверить различные регулярные выражения, загрузите Expresso из http://www.ultrapico.com/. Это действительно помогло мне.