Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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 为什么字符类中的句点不仅与文字句点匹配_Javascript_Regex - Fatal编程技术网

Javascript 为什么字符类中的句点不仅与文字句点匹配

Javascript 为什么字符类中的句点不仅与文字句点匹配,javascript,regex,Javascript,Regex,[email@address.com] 有人能帮我理解为什么字符与这个正则表达式匹配吗?我一直认为这是一个好主意。在字符类中,[]被逐字解释 当我删除时,它不再返回该段落标记。您的正则表达式中存在潜在的隐藏问题: console.log("<p>email@address.com</p>".match(/([a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-]+\.[a-z]{2,10})/g)) 如果仔细查看第一个字符类,您将看到连字符定义了介于之间的范围。还有

[email@address.com]

有人能帮我理解为什么<>字符与这个正则表达式匹配吗?我一直认为这是一个好主意。在字符类中,[]被逐字解释


当我删除时,它不再返回该段落标记。

您的正则表达式中存在潜在的隐藏问题:

console.log("<p>email@address.com</p>".match(/([a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-]+\.[a-z]{2,10})/g))
如果仔细查看第一个字符类,您将看到连字符定义了介于之间的范围。还有!。这可能是无意中包含了您不想要的字符。尝试将连字符移动到字符类的末尾:

([a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-]+\.[a-z]{2,10}
这里是[a-zA-Z0-9.-U9+]和的正则表达式演示。请注意,@和^在原始版本中进行了匹配,但在移动到类末尾后停止了匹配。

您正在匹配。-\u范围内的所有字符从。至u,包括ASCII范围46-95中的所有字符

若要解决此问题,请通过书写来逃避\-


.————看起来可疑。两者之间有一个世界。和uu。这匹配一个范围。-uu从ascii 46-95,其中为60和62。注:始终放在字符类的末尾。在整个正则表达式上的侧注用于电子邮件地址-主题。请查看以下网站:;;'啊!是的。你也可以改变顺序_-如果我们在讨论技巧,你也可以把a]作为集合项的第一个字符。导致奇怪的正则表达式[]-],它与a]或a匹配-
([a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,10}
([a-zA-Z0-9.\-_+]+@[a-zA-Z0-9.-]+\.[a-z]{2,10})
            ^ note backslash here