正则表达式以验证以.edu结尾的电子邮件

时间:2012-01-16 19:11:06

标签: c# asp.net asp.net-mvc regex asp.net-mvc-3

我正在尝试在asp.net mvc中创建一个正则表达式验证属性,以验证输入的电子邮件是否具有.edu TLD。

我尝试过以下但是表达式永远不会验证为真......

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

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

任何人都可以提供一些见解吗?

4 个答案:

答案 0 :(得分:4)

这应该适合你:

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

细分,因为你说你在RegEx上很弱:

^字符串的开头

[a-zA-Z0-9._%+-]+一个或多个字母,数字,点,下划线,百分号,加号或破折号

@ @

[a-zA-Z0-9.+-]+一个或多个字母,数字,点,加号或破折号

\.edu .edu

$字符串结尾

答案 1 :(得分:1)

如果您使用的是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#会在将它传递给正则表达式之前应用它自己的转义序列

(a | b | c)匹配'a'或'b'或'c'。 [a-z]匹配a和z之间的所有字符,大写字母和数字相似,因此,([0-9] | [a-z] | [A-Z])匹配任何字母数字字符

([0-9] | [a-z] | [A-Z])+匹配1个或更多个字母数字字符。正则表达式中的+表示前一个中的一个或多个

@代表电子邮件地址中的“@”符号。如果它不起作用,你可能不得不逃避它,但我不知道在javascript正则表达式中@的任何特殊含义

让我们更加简化

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

\ w代表任何字母数字字符,包括下划线

https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions阅读一些正则表达式文档以获取更多信息

答案 2 :(得分:0)

试试这个:

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

答案更新......

答案 3 :(得分:0)

您可能有不同的组合,可能是非常简单的组合:

\S+@\S+\.\S+\.edu