Глядя на сообщения здесь для проверки адреса электронной почты, я выгляжу гораздо более либеральным в отношении теста на стороне клиента, который я выполняю.
Самое близкое, что я видел до сих пор:
^([\w-\.]+)@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.)|(([\w-]+\.)+))
([a-zA-Z]{2,4}|[0–9]{1,3})(\]?)$
Это не будет соответствовать this#strnage@foo.com, который в соответствии с RFC действителен
- Прописные и строчные буквы английского алфавита (a-z, A-Z)
- Цифры от 0 до 9
- Персонажи! # $% & '* + - / =? ^ _ `{| } ~
- Персонаж. (точка, точка, точка) при условии, что это не первый или последний символ, а также при условии, что он не появляется два или более раз подряд.
Я хочу довольно простое совпадение:
- Не начинается с.
- Любой символ, допустимый до @
- Любой символ, разрешенный после @
- Нет подряд. или @ разрешено
- Часть после последней. (tld) должно быть [a-z0-9-]
Я буду использовать \ i, чтобы сделать поиск нечувствительным к регистру. Последовательные символы - то, где я зацикливаюсь.