【问题标题】:ASP.NET email Regular Expression not working with hyphen just before the @ASP.NET 电子邮件正则表达式在 @ 之前不能使用连字符
【发布时间】:2012-01-12 23:26:52
【问题描述】:

我有以下 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 上进行了验证,您可以在 @ 符号前创建一个带有连字符的电子邮件地址。

我必须在验证表达式中进行哪些更改才能接受此连字符?

【问题讨论】:

    标签: .net regex validation


    【解决方案1】:

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

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

    您是否也允许在连字符之前使用+?然后你会像这样添加它

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

    等等。

    【讨论】:

    • 您好,谢谢。我做了你告诉我的改变,现在它正在工作。 :)
    【解决方案2】:

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

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

    【讨论】:

    • 等待..这将允许 bladi.bladi.@something.com 或 bladi.bladi+@something.com 这不好:(
    • bladi.bladi+@something.com 是一个有效的电子邮件地址
    • @PHeiberg 真的吗?但是 bladi.bladi.@something.com 呢?
    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2011-01-20
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2011-02-14
    相关资源
    最近更新 更多