Regex для университетских писем - PullRequest
0 голосов
/ 02 сентября 2011

Я хочу проверить адреса электронной почты, убедившись, что у них есть определенный поддомен университета, например, если пользователь говорит, что он посещает Оксфордский университет, я хочу убедиться, что его адрес электронной почты заканчивается на .ox.ac.uk

Если у меня часть '.ox.ac.uk' хранится как переменная, как я могу включить это в регулярное выражение, чтобы убедиться, что вся электронная почта действительна и заканчивается суффиксом этой переменной?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

Мы используем этот шаблон электронной почты (полученный из этой статьи регулярные_экспрессии.info ):

^[\w!#$%&'*+/=?^`{|}~-]+(?:\.[\w!#$%&'*+/=?^`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`

Вы должны иметь возможность дополнить его необходимым суффиксом:

^[\w!#$%&'*+/=?^`{|}~-]+(?:\.[\w!#$%&'*+/=?`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?:\.ox\.ac\.uk)$`

Обратите внимание, что я заменил часть TLD [a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])? на требуемый суффикс (?:\.ox\.ac\.uk) (\. используется только для совпадения с точкой)

Редактировать: еще одно примечание: если вы используете String#matches(...) или Matcher#matches(), нет необходимости в начале ^ и в конце $, поскольку вся строка должна совпадать в любом случае.

0 голосов
/ 02 сентября 2011

Если вы используете php.

$ending = '.ox.ac.uk';
if(preg_match('/'.preg_quote($ending).'$/i', $email_address)) //... your code

Дополнительная информация: preg_quote () необходим для экранирования символов, если они имеют особое значение. В твоем случае это точки.

edit: Чтобы проверить, является ли полное письмо действительным , посмотрите другие вопросы, его часто задают. Просто хотел помочь с вашим особым случаем.

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