我有以下与电子邮件地址格式匹配的正则表达式:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
这用于使用JavaScript进行表单验证。但是,这是一个可选字段。因此,如何更改此正则表达式以匹配电子邮件地址格式或空字符串?
根据我对正则表达式的有限了解,我认为\b
匹配一个空字符串,并|
表示“ Or”,因此我尝试执行以下操作,但此方法无效:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
我有以下与电子邮件地址格式匹配的正则表达式:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
这用于使用JavaScript进行表单验证。但是,这是一个可选字段。因此,如何更改此正则表达式以匹配电子邮件地址格式或空字符串?
根据我对正则表达式的有限了解,我认为\b
匹配一个空字符串,并|
表示“ Or”,因此我尝试执行以下操作,但此方法无效:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
Answers:
要匹配pattern
或为空字符串,请使用
^$|pattern
^
和$
分别是字符串锚点的开头和结尾。|
用于表示替代项,例如this|that
。\b
\b
在大多数情况下,都是“单词边界”锚。这是一个零宽度的匹配项,即一个空字符串,但仅在非常特定的位置(即单词边界)匹配那些字符串。
即\b
位于:
\w
和\W
(任意顺序)之间:
^
和之间\w
\w
\w
和之间$
\w
根据规范,这并非无关紧要。
我不确定为什么要验证可选的电子邮件地址,但建议您使用
^$|^[^@\s]+@[^@\s]+$
含义
^$ empty string
| or
^ beginning of string
[^@\s]+ any character but @ or whitespace
@
[^@\s]+
$ end of string
无论如何,您都不会停止虚假电子邮件,这样您就不会停止有效的地址。