Когда пользователи создают учетную запись на моем сайте, я хочу, чтобы сервер проверял сообщения электронной почты, чтобы они не принимали каждый ввод.
Я пришлю подтверждение, чтобы провести проверку рукопожатия .
Я ищу что-то простое, не лучшее , но не слишком простое, что ничего не подтверждает. Я не знаю, где должно быть ограничение, поскольку любое регулярное выражение не будет выполнять правильную проверку, потому что это невозможно сделать с помощью регулярных выражений.
Я пытаюсь ограничить синтаксис и визуальную сложность, присущие регулярным выражениям, потому что в этом случае любое будет правильным.
Какое регулярное выражение я могу использовать для этого?
c#
regex
email-validation
eKek0
источник
источник
Ответы:
источник
Можно написать регулярное выражение, которое принимает только адреса электронной почты, соответствующие стандартам. Однако есть некоторые адреса электронной почты, которые не соответствуют стандартам, но все же работают.
Вот несколько простых регулярных выражений для базовой проверки:
Содержит символ @:
Содержит @ и точку где-то после него:
Имеет хотя бы один символ перед @, до точки и после нее:
Имеет только один @, по крайней мере, один символ перед @, до точки и после нее:
Пользователь AmoebaMan17 предлагает эту модификацию для устранения пробелов:
И для принятия только одного периода:
источник
test@test.com
?^ [a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 -] +. [a-zA-Z0-9 -.] + $
источник
Я думаю, что эта небольшая настройка выражения AmoebaMan17 должна остановить адрес от начала / окончания точки, а также остановить несколько точек рядом друг с другом. Попытка не усложнять снова, устраняя при этом общую проблему.
Кажется, он работает (но я не 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])+)\])
На всякий случай, если вам интересно. :)
источник