正则表达式使浏览器无响应
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
我有以下正则表达式,可以很好地解析渐变
/(?:\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