javascript - Chrome 在执行正则表达式匹配时崩溃

标签 javascript jquery html regex google-chrome

我试图用正则表达式匹配 50 个由逗号 (,) 分隔的电子邮件 ID,每次我尝试执行此操作时,chrome 都会崩溃。但是,Safari 似乎可以处理这个问题。我正在使用下面的代码

var emailValidator = /^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$/;
if(!formData.emailList.match(emailValidator))
    showWarning("Invalid email ids");

有人可以告诉我为什么会发生这种情况吗?

提前致谢。

最佳答案

*[\W]*)+

这是因为您的这个组件导致了灾难性的回溯。删除它,它将正常工作。

看到这里由于回溯而失败

https://regex101.com/r/vN3sH3/73

改进

https://regex101.com/r/vN3sH3/74

或者以这种方式起草你的正则表达式

^[\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4}(?:,[\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4})*$

查看演示。

https://regex101.com/r/vN3sH3/75

关于javascript - Chrome 在执行正则表达式匹配时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619583/

相关文章:

javascript - 一次设置一个元素为 'active'

html - 定义列表格式未按预期工作

javascript - 使用 Javascript 扩展侧边栏高度以等于内容高度

html - 将 html 元素保持在同一行

javascript - Angular : ng-repeat depending on state of other object

javascript - D3 树动态更新节点颜色

javascript - 如何在 Bootstrap 模式中获取按钮点击数据

javascript - 当表中只有一行时,数据表行被减半

javascript - 监视一个 ng-model 并将更改应用到 ng-repeat 中的另一个 ng-model

javascript - 空事件会减慢 Javascript 处理速度吗?