代码之家  ›  专栏  ›  技术社区  ›  schooner

Regex电子邮件-忽略前导空格和尾随空格?

  •  9
  • schooner  · 技术社区  · 16 年前

    我们使用下面的方法在ASP中进行电子邮件验证。净:

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

    如何将其修改为忽略前导空格和尾随空格?

    我们在回发时在代码中处理的实际修剪,但是如果用户经常因为复制和粘贴而有额外的空间,验证程序将被触发为无效。

    5 回复  |  直到 16 年前
        1
  •  17
  •   localshred    16 年前

    你可以 \s* 之前和之后,你的模式和它应该正常工作。

        2
  •  7
  •   Jeff Moser    16 年前

    将所需内容分组到命名的捕获中,然后在捕获前后留出空间

    \s*(?<email>\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*)\s*
    
        3
  •  4
  •   Peter Mortensen icecrime    9 年前

    在你把它交给验证器之前,只需修剪一下。

        4
  •  1
  •   Vaibhav Garg    11 年前

    如果是ASP。NET的以下工作:

    <asp:TextBox runat="server" ID="EmailAddress" />
    <asp:RegularExpressionValidator ValidationExpression="\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*" runat="server" ControlToValidate="EmailAddress" Text="*" ErrorMessage="Email is not valid"  />
    

    允许发送多种电子邮件,如:

    "some@one.com"
    "  some@one.com  "
    "so_me@one.co.uk"
    " a.s-d__+f@asd.as.as "
    

    确保在代码中去掉空格,如下所示:

    VB Dim Email as string = EmailAddress.Text.Trim()

    C# string Email = EmailAddress.Text.Trim();

        5
  •  0
  •   Fandango68    8 年前

    我本想用一个简单的评论来“回答”这个问题,但你问题的真正答案是 没有答案 .

    为什么?

    因为任何在其前后带有空格或空格的电子邮件地址都是 无效的 电子邮件地址。

    例如,您尝试将一个带有空格字符的电子邮件地址传递到SMPTP控件中,然后尝试发送它, 它将失败 !

    所有电子邮件地址都必须从这个正则表达式的角度进行验证。。。

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

    甚至这个

    /.+@.+/

    还有别的吗? 无效的电子邮件地址。

    真正的解决方法是在传递到电子邮件控件使用它之前修剪()字符串。

    只是警告你。