我在js中使用以下正则表达式
^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$
这会验证子域中的电子邮件(例如:myname@google.co.in
)
不幸的是,双点也被验证为真,例如
myname@..in
myname@domain..in
我理解部分@[a-zA-Z0-9.-]
将被修改但有点震惊。什么是最好的方法。
TIA
答案 0 :(得分:3)
尝试使用:
^([\w+-]+\.)*[\w+-]+@([\w+-]+\.)*[\w+-]+\.[a-zA-Z]{2,4}$
我已将[a-zA-Z0-9_]
替换为char组中的完全等效\w
。
请注意,在正则表达式语言中,点.
是一个匹配所有内容(但换行符)的特殊字符。因此,要匹配文字点,您需要将其转义\.
。
<强>勒亘强>:
^
字符串的开头([\w+-]+\.)*
零个或多个正则表达式单词(加上+
和减去-
成瘾)由一个或多个字符组成,后跟一个文字点\.
[\w+-]+
正则表达式字词(加上[+-]
)的1个或多个字符@
文字字符([\w+-]+\.)*[\w+-]+
与上述相同的顺序\.[a-zA-Z]{2,4}
文字点后跟一系列小写或大写字符,长度介于2到4个字符之间。 $
字符串结尾答案 1 :(得分:1)