正则表达式使浏览器无响应

时间:2017-06-03 23:30:33

标签: javascript regex timeout

我有以下正则表达式,可以解析渐变

/(?:\s*)(?:linear|radial)-gradient\s*\(((?:\([^\)]*\)|[^\)\(]*)*)\)/g

当无效字符串传递给regex.exec函数时,如下所示:

var regex = /(?:\s*)(?:linear|radial)-gradient\s*\(((?:\([^\)]*\)|[^\)\(]*)*)\)/g;
var test = "radial-gradient( circle farthest-corner, white";
regex.exec(test);

浏览器挂起时脚本无响应,直到超时为止。

当我尝试这个as a regex101时,我收到消息

的超时
  

你的表达花了很长时间才完成并被终止。请   增加超时并重试。

你可以帮我改写正则表达式吗?如果它找不到匹配就不会超时?当然,我也想知道为什么会超时。

1 个答案:

答案 0 :(得分:1)

无需保留双嵌套星形量词:

/(?:\s*)(?:linear|radial)-gradient\s*\(((?:\([^\)]*\)|[^\)\(])*)\)/g

See demo