ASP.NET电子邮件正则表达式在@之前不使用连字符

时间:2012-01-12 23:26:53

标签: .net regex validation

我有以下ASP.NET标记:

<asp:regularexpressionvalidator id="RegularExpressionValidator7"
            runat="server" 
            ControlToValidate="Email1" 
            ErrorMessage="Email not valid" 
            ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">

如您所见,验证表达式是Visual Web Developer默认提供的表达式。它一直对我有用,直到有人试图输入这个电子邮件地址:

johnsmith-@hotmail.com

验证员说电子邮件无效,但确实如此。我在hotmail.com验证了你可以在@符号之前用连字符创建一个电子邮件地址。

我必须在验证表达式中更改什么才能接受此连字符?

2 个答案:

答案 0 :(得分:2)

在正则表达式中的-?之前添加可选连字符(@)。

ValidationExpresion="\w+([-+.]\w+)*-?@\w+([-.]\w+)*\.\w+([-.]\w+)*"
....................change.here....^^

您是否也允许在连字符之前使用+?然后你就像

一样添加它
ValidationExpresion="\w+([-+.]\w+)*[-+]?@\w+([-.]\w+)*\.\w+([-.]\w+)*"
.....................change.here...^^^^^

等等。

答案 1 :(得分:0)

第一组中的加号量词变为*

\w+([-+.]\w*)*@\w+([-.]\w+)*\.\w+([-.]\w+)*