我有以下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验证了你可以在@符号之前用连字符创建一个电子邮件地址。
我必须在验证表达式中更改什么才能接受此连字符?
答案 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+)*