Мы все знаем, что проверка адреса электронной почты является осязаемым предметом, существует так много мнений о наилучшем способе борьбы с ним без кодирования для всего RFC. Но с 2009 года он становится еще более сложным, и я пока не видел, чтобы кто-либо обращался к проблеме IDN.preg_match проверка неанглийских адресов электронной почты (международные доменные имена)
Вот что я использую:
preg_match(/^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,6}\z/i)
, который будет работать для большинства адресов электронной почты, но что, если мне нужно, чтобы соответствовать нонам латинского адреса электронной почты? например, bob @ china. 中國, или [email protected]рф
Посмотрите here для получения полного списка. (Обратите внимание на все нелатинские расширения домена внизу списка.)
Информация об этом предмете может быть найдена here, и я думаю, что они говорят, что эти новые символы будут просто считаться «.xn - fiqz9s 'и' .xn - p1ai 'на уровне машины, но я не уверен на 100%.
Если это так, значит ли это единственное изменение, которое мне необходимо рассмотреть в моем коде: (Для доменных расширений, таких как .travelersinsurance и .sandvikcoromant)
preg_match(/^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,20}\z/i)
ВНИМАНИЕ: Это не связанно с обсуждением найденного на этой странице Using a regular expression to validate an email address
Это не дубликат, он спрашивает о чем-то, что даже не существовало, когда задавался указанный вопрос. –
@Stilleur Аспект проверки международного доменного имени (IDN) не обсуждается нигде на этой странице. – Vince
@Vince Да, извините за это. Как я только что поставил свой вопрос. Я спросил себя, как я могу отменить его (и я поддержал его, потому что это очень интересно). – Stilleur