Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 谷歌浏览器挂起了regex_Javascript_Regex_Google Chrome - Fatal编程技术网

Javascript 谷歌浏览器挂起了regex

Javascript 谷歌浏览器挂起了regex,javascript,regex,google-chrome,Javascript,Regex,Google Chrome,我有一个正则表达式([a-Za-z0-9][a-Za-z0-9-]*)([\.\\.\?[a-Za-z0-9-]+)*(\.[a-Za-z]{2,6})+(\/[a-Za-z][a-Za-z0-9-]+)*$ 它是用于域验证的正则表达式 它适用于大多数域,但页面因以下字符串而挂起: “webmail.google.com.qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq 它在Firefox中运行

我有一个正则表达式([a-Za-z0-9][a-Za-z0-9-]*)([\.\\.\?[a-Za-z0-9-]+)*(\.[a-Za-z]{2,6})+(\/[a-Za-z][a-Za-z0-9-]+)*$

它是用于域验证的正则表达式

它适用于大多数域,但页面因以下字符串而挂起:

webmail.google.com.qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq


它在Firefox中运行良好,并抛出验证错误消息,但同样的事情使页面挂起在GoogleChrome中。我找不到合适的解决办法。我也尝试了所有其他的正则表达式站点,但没有找到确切的解决方案。

这个问题确实是灾难性的回溯,它是由
[\.\\.\\.\\.\\.\\.\\\.\\.\\.\\\.\\\.\\\\.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

删除可选量词
([\.\\\][A-Za-z0-9-]+)*
应该可以解决问题。正则表达式的功能保持不变
不需要在字符类内转义,因此您可以在不更改正则表达式含义的情况下编写
[.\u]


只要实现根据规范返回正确的结果,就可以自由地优化匹配过程并减少经典灾难模式的运行时间。至于为什么Chrome挂在这个正则表达式上而Firefox不挂,Firefox已经表现出这种行为很长一段时间了。不过,我不太清楚细节。(他们是从哪个版本大修发动机的?结果可信吗?是否提前退出?如何防止回溯?优化的范围是什么?等等。)

我不知道为什么这个问题会被解决。问题很清楚,正则表达式导致了这个问题,它正在寻求解决方案。您使用的是哪个版本的Firefox?不过,代码挂起在FF32 Windows 32位版本上。实际上,该页面挂起在Chrome中,但不在firefox中。在firefox中,它运行良好。