如何防止正则表达式在@字符后验证双点

时间:2015-11-30 08:17:12

标签: javascript regex

我在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

2 个答案:

答案 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)

试试这个:

int max = INT_MIN;

要测试RegExps,看看它是如何工作的 - 请检查https://regex101.com/