Существует ряд email regexp questions popping вверх, и я честно озадачен тем, почему люди используют эти безумно тупые сопоставляющие выражения, а не очень простой парсер, который разделяет электронную почту а затем проверяет их на допустимые символы, разрешенные для имени (нет дополнительной проверки, которая может быть сделана на этой части) и действительных символов для домена (и я полагаю, вы могли бы добавить проверку всех мировые TLD, а затем еще один уровень доменов второго уровня для стран с такими (например, com.uk)).
Реальная проблема заключается в том, что tlds и slds продолжают меняться (вопреки распространенному мнению), поэтому вам нужно постоянно обновлять regexp, если вы планируете выполнять все эти проверки высокого уровня, когда серверы корневых имен отправляют изменения.
Почему бы не иметь модуль, который просто проверяет домены, которые извлекаются из базы данных или плоского файла, и, возможно, проверяет DNS для соответствия записей?
Я серьезно здесь, почему все так любят изобретать идеальное регулярное выражение для этого? Это не похоже на подходящее решение проблемы...
Убедите меня, что это возможно не только в regexp (и удовлетворить всех), а в том, что это лучшее решение, чем пользовательский синтаксический анализатор/валидатор.
-Adam