Javascript 改进正则表达式以匹配css文件中的字体文件

Javascript 改进正则表达式以匹配css文件中的字体文件,javascript,php,regex,fonts,pattern-matching,Javascript,Php,Regex,Fonts,Pattern Matching,我正在尝试匹配CSS文件中包含的字体文件。 字体文件可以具有以下扩展名: 和以下格式: - url("../../../../fonts/font_awesome/fontawesome-webfont.ttf?v=4.6.3") - url("../../../../fonts/font_awesome/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular") 在这种情况下,匹配应为: ../../../../fonts/font_awesom

我正在尝试匹配CSS文件中包含的字体文件。 字体文件可以具有以下扩展名: 和以下格式:

- url("../../../../fonts/font_awesome/fontawesome-webfont.ttf?v=4.6.3")
- url("../../../../fonts/font_awesome/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular")
在这种情况下,匹配应为:

../../../../fonts/font_awesome/fontawesome-webfont.ttf?v=4.6.3
../../../../fonts/font_awesome/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular
我已经制作了一个与它们匹配的正则表达式,但是在使用在线服务时,正则表达式返回给我一个警告,说它有灾难性的回溯,所以我想问这个正则表达式如何更好:

url\s*\(\s*\S(.+?\.(woff|eot|woff2|ttf|svg)\s*)\??\S+?\s?\)
带有回溯警告的Regex正在运行:

这将完成以下工作:

url\(“([^\)]+?\(woff | eot | woff2 | ttf | svg)[^”]*”


你可以在这里玩:

看起来很晚了,但可能也会有帮助

url\(['"]([^"']+(woff|eot|woff2|ttf|svg)[^"']+)

如果不包含文件格式,则不必执行那么多步骤

/url\("(.*?)"\)/

嘿,马丁,谢谢你的建议,不过情况并不总是如此,可能会不同,有什么建议吗?很好的答案,将它与其他答案进行比较,这是一个用较少的步骤找到匹配项的答案!谢谢,这确实能找到所有匹配项,但是在很多步骤中,这就是为什么投票不被接受的原因。谢谢,这确实找到了所有匹配项,但是比Martin的答案多了600-700步。
/url\("(.*?)"\)/