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


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

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

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

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

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

5 63

5 ответов:

^\S+@\S+$

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

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

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

@

содержит @ и точку где-то после него:

@.*?\.

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

.+@.+\..+

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

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

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

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

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

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

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

то есть: вот мой новый адрес электронной почты tabby@coolforcats.com.

выбирай.

вот тот, который соответствует 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])+)\])

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

^[a-zA-Z0-9_.+- ] + @[a-zA-Z0-9 -]+.[a-zA-Z0-9 -.]+$

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