正则表达式匹配模式,或者是空字符串
我有以下正则表达式匹配电子邮件地址格式:
^[w.-]+@([w-]+.)+[a-zA-Z]+$
这用于使用JavaScript对表单进行验证。 但是,这是一个可选字段。 因此,如何更改此正则表达式以匹配电子邮件地址格式或空字符串?
从我有限的正则表达式知识中,我认为b
匹配一个空字符串,并|
意思是“或”,所以我试图做到以下,但它没有奏效:
^[w.-]+@([w-]+.)+[a-zA-Z]+$|b
要匹配pattern
或空字符串,请使用
^$|pattern
说明
^
和$
分别是字符串锚的开始和结束。 |
用于表示交替,例如this|that
。 参考
在b
b
最有味道的是一个“文字边界”锚点。 它是一个零宽度匹配,即一个空字符串,但它只能匹配那些非常特定位置的字符串,即在一个字的边界处。
也就是b
位于:
w
和W
(任一顺序): ^
和w
w
开头的字符串开头 w
和$
w
结尾,则在字符串的末尾 参考
使用正则表达式来匹配电子邮件地址
根据规格,这不是微不足道的。
相关问题
另一种方法是将您的正则表达式放在非捕获括号中。 然后让该表达式可选使用?
限定符,它将查找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