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

Javascript 正则表达式使浏览器无响应,javascript,regex,timeout,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-

我有下面的正则表达式,它可以很好地解析梯度

/(?:\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);
浏览器将挂起一个无响应的脚本,直到超时

当我试着这样做时,我收到了一个超时消息

您的表达耗时太长,因此被终止。请 请增加超时时间,然后重试


你能帮我重写正则表达式吗?这样,如果找不到匹配项,它就不会超时?一、 当然,我也想知道它为什么超时。

没有必要保留一个双嵌套星量词:

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

谢谢!我不会抓到的。花了一段时间才弄明白为什么正则表达式在没有嵌套星的情况下仍然有效。我仍然不明白为什么正则表达式超时。