用于匹配 css 网址的正则表达式



我有正则表达式

/url\(\s*(?!data:)([^\)\s]+)\s*\)?/

它在 css 中搜索这样的行

background-image: url(/path.to/img.png);

并忽略线条

background-image: url(data:image/svg+xml;base64, PHN2ZyB4bWxucz) no-repeat;

它用于查找图像路径并替换它们。

但是,如果数据网址有引号

background-image: url("data:image/svg+xml;base64, PHN2ZyB4bWxucz") no-repeat;

正则表达式与之匹配。我需要匹配通常的图像 url,并忽略带有单引号、双引号或不带引号的数据 url。

url\(\s*(?!["']?data:)([^)]+)\)

在此正则表达式中,它将忽略如下所示的任何内容(在(后接受可选空格

url("data...
url(data:...

这意味着它只会匹配您在该问题上给出的第一个示例。

尝试将模式与("|')?一起使用:

/url\(("|')?\s*([^(:;,]+)\s*("|')?\);?/

("|')?还允许您匹配单引号或双引号

相关内容

  • 没有找到相关文章

最新更新