Регулярное выражение для проверки электронной почты, заканчивающейся на .edu - PullRequest
0 голосов
/ 16 января 2012

Я пытаюсь создать атрибут проверки регулярных выражений в asp.net mvc, чтобы проверить, что введенный адрес электронной почты имеет домен .edu.

Я пробовал следующее, но выражение никогда не проверяется на true ...

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

и

\w.\w@{1,1}\w[.\w]?.edu

Может ли кто-нибудь дать некоторое представление?

Ответы [ 4 ]

4 голосов
/ 16 января 2012

Это должно работать для вас:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+\.edu$

Сбой, так как вы сказали, что были слабыми на RegEx:

^ Начало строки

[a-zA-Z0-9._%+-]+ одна или несколько букв, цифр, точек, подчеркиваний, знаков процента, плюсов или тире

@ @

[a-zA-Z0-9.+-]+ одна или несколько букв, цифр, точек, знаков плюс или тире

\.edu .edu

$ Конец строки

1 голос
/ 16 января 2012

если вы используете атрибуты проверки asp.net mvc, ваше регулярное выражение на самом деле должно быть закодировано с помощью синтаксиса регулярных выражений javascript, а не синтаксиса c # regex.Некоторые символы одинаковы, но вы должны быть утомлены этим.

Вы хотите, чтобы ваш атрибут выглядел следующим образом:

 [RegularExpression(@"([0-9]|[a-z]|[A-Z])+@([0-9]|[a-z]|[A-Z])+\.edu$", ErrorMessage = "text to display to user")]

причина, по которой вы добавляете символ @ перед строкойсделать буквальную строку, потому что я верю, что c # будет применять свои собственные escape-последовательности, прежде чем передать его в регулярное выражение

(a | b | c) соответствует либо «a», либо «b», либо «c»,[az] соответствует всем символам между a и z, и аналогично для заглавных букв и цифр, поэтому ([0-9] | [az] | [AZ]) соответствует любому буквенно-цифровому символу

([0-9] | [az] | [AZ]) + соответствует 1 или более буквенно-цифровым символам.+ в регулярном выражении означает 1 или более из предыдущих

@ для символа '@' в адресе электронной почты.Если это не сработает, вам, возможно, придется его избежать, но я не знаю какого-либо особого значения для @ в регулярном выражении javascript

Давайте упростим его еще

[RegularExpression(@"\w+@\w+\.edu$", ErrorMessage = "text to display to user")]

\w обозначает любой буквенно-цифровой символ, включая подчеркивание

. Для получения дополнительной информации

прочитайте некоторую документацию по регулярным выражениям в https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions.
0 голосов
/ 16 января 2012

У вас могут быть разные комбинации, и они могут быть очень простыми:

\S+@\S+\.\S+\.edu
0 голосов
/ 16 января 2012

попробуйте это:

Regex regex = new Regex(@"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(edu)$", RegexOptions.IgnoreCase);

ОТВЕТ ОБНОВЛЕНО ...

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