正则表达式匹配模式,或者是空字符串

我有以下正则表达式匹配电子邮件地址格式:

^[w.-]+@([w-]+.)+[a-zA-Z]+$

这用于使用JavaScript对表单进行验证。 但是,这是一个可选字段。 因此,如何更改此正则表达式以匹配电子邮件地址格式或空字符串?

从我有限的正则表达式知识中,我认为b匹配一个空字符串,并| 意思是“或”,所以我试图做到以下,但它没有奏效:

^[w.-]+@([w-]+.)+[a-zA-Z]+$|b

要匹配pattern或空字符串,请使用

^$|pattern

说明

  • ^$分别是字符串锚的开始和结束。
  • | 用于表示交替,例如this|that
  • 参考

  • regular-expressions.info/Anchors和Alternation

  • b

    b最有味道的是一个“文字边界”锚点。 它是一个零宽度匹配,即一个空字符串,但它只能匹配那些非常特定位置的字符串,即在一个字的边界处。

    也就是b位于:

  • 在连续wW (任一顺序):
  • 即在单词字符和非单词字符之间
  • ^w
  • 即在以w开头的字符串开头
  • w$
  • 即,如果以w结尾,则在字符串的末尾
  • 参考

  • regular-expressions.info/Word边界

  • 使用正则表达式来匹配电子邮件地址

    根据规格,这不是微不足道的。

    相关问题

  • 验证电子邮件地址的最佳正则表达式是什么?
  • 正则表达式很难识别电子邮件地址?
  • 一个人应该采取多大的电子邮件地址验证?

  • 另一种方法是将您的正则表达式放在非捕获括号中。 然后让该表达式可选使用? 限定符,它将查找0(即空字符串)或1个未捕获组的实例。

    例如:

    /(?: some regexp )?/
    

    在你的情况下,正则表达式看起来像这样:

    /^(?:[w.-]+@([w-]+.)+[a-zA-Z]+)?$/
    

    没有| “或”操作员必要!

    这里是JavaScript正则表达式语法的Mozilla文档。


    我不确定你为什么要验证一个可选的电子邮件地址,但我建议你使用

    ^$|^[^@s]+@[^@s]+$` 
    

    含义

    ^$        empty string
    |         or
    ^         beginning of string
    [^@s]+   any character but @ or whitespace
    @         
    [^@s]+
    $         end of string
    

    无论如何,你不会停止伪造电子邮件,这样你就不会停止有效地址。

    链接地址: http://www.djcxy.com/p/92751.html

    上一篇: Regular expression which matches a pattern, or is an empty string

    下一篇: Sql script to find invalid email addresses