Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止正则表达式在@character之后验证双点_Javascript_Regex - Fatal编程技术网

Javascript 如何防止正则表达式在@character之后验证双点

Javascript 如何防止正则表达式在@character之后验证双点,javascript,regex,Javascript,Regex,我在js中使用以下正则表达式 ^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ 这将验证子域中的电子邮件(例如:myname@google.co.in) 不幸的是,双点也被验证为true,例如 myname@..in myname@domain..in 我知道零件@[a-zA-Z0-9.-]需要修改,但有点罢工。最好的方法是什么 TIA尝试使用: ^([\w+-]+\.)*[\w+-]+@([\w+-]+\.)*[\w+-]+\.[a-zA-Z

我在js中使用以下正则表达式

^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$
这将验证子域中的电子邮件(例如:
myname@google.co.in
) 不幸的是,双点也被验证为true,例如

myname@..in
myname@domain..in
我知道零件
@[a-zA-Z0-9.-]
需要修改,但有点罢工。最好的方法是什么

TIA

尝试使用:

^([\w+-]+\.)*[\w+-]+@([\w+-]+\.)*[\w+-]+\.[a-zA-Z]{2,4}$
我已经用char组中完全等效的
\w
替换了
[a-zA-Z0-9.]

注意,在正则表达式语言中,点
是一个特殊的字符,它匹配所有内容(除了换行符)。因此,要匹配文字点,需要对其进行转义。。

传奇人物:

  • ^
    字符串的开头
  • ([\w+-]+\)*
    零个或多个正则词(在加
    +
    和减
    -
    中)由1个或多个字符组成,后跟一个文字点
    \。
  • [\w+-]+
    一个或多个字符的正则词(加上
    [+-]
  • @
    文字字符
  • ([\w+-]+\)*[\w+-]+
    与上述顺序相同
  • \.[a-zA-Z]{2,4}
    文字点,后跟长度在2到4个字符之间的小写或大写字符序列
  • $
    字符串的结尾
试试这个:

^([a-zA-Z0-9._+-]+)(@[a-zA-Z0-9-]+)(.[a-zA-Z]{2,4}){2,}$

您可以在此处进行测试-

您的电子邮件验证正则表达式不正确,而且不正确,因此请尝试使用预先构建的东西。正则表达式等价于
^(+.+)(@.+)([a-zA-Z]{2.4}){2,}$
。转义点
,因为它不只是匹配文字点(它现在匹配所有内容,使组中的其他字符冗余)。为什么会有这么多未使用的捕获组?按原样看它并不能解决运算问题…这个正则表达式实际上不需要在
@
之后加一个点。