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

Regex making the browser unresponsive

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

/(?:\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 时,我收到超时消息

Your expression took too long to finish and was terminated. Please increase the timeout and try again.

你能帮我重写正则表达式,让它在找不到匹配项时不会超时吗?我当然也想知道为什么会超时

无需保留双嵌套星号量词:​​

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

See demo