正则表达式的问题在于它们有时过于严格,超出了您的需求。如果您向我们展示了您当前无法正常工作的正则表达式,我将能够为您提供更多帮助。
第一条评论:浏览器倾向于容忍 大多数 HTML / CSS错误(不是Javascript,这是一种编程而非标记语言)。
您可以从
background(-image)?令牌开始锁定第一部分。如何进行?非常困难…
总是带有冒号,因此您可以将其添加到令牌的常量部分,然后根据示例(而非CSS规范)判断出可变数量的空格,后跟
url令牌。一个 可变数量
的空格的是
[w]*,这成为我们的正则表达式的一部分。
我用RegexBuddy尝试过
background(-image)?: url[s]*([s]*(?<url>[^)]*));
不幸的是,它捕获URL内的空格
Matched text: background-image: url('test/test.gif');Match offset: 0Match length: 39Backreference 1: -imageBackreference 1 offset: 10Backreference 1 length: 6Backreference 2: 'test/test.gif'Backreference 2 offset: 22Backreference 2 length: 15Matched text: background: url ( test4/ test4.gif );Match offset: 119Match length: 39Backreference 1: Backreference 1 offset: -1Backreference 1 length: 0Backreference 2: test4/ test4.gif Backreference 2 offset: 138Backreference 2 length: 18
因此,当您获得带有此URL的URL时,必须修剪字符串。从
url示例4开始,我无法从组中排除空格,但是,它 应该与其中包含空格的URL匹配
,并且在没有
%20test4.gif文件的情况下,此示例不正确。
[编辑]我更喜欢以下正则表达式版本
background(-image)?: url[s]*([s]*(?<url>[^)]*)[s]*)[s]*;
容忍更多空白
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)