我有正则表达式
/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*("|')?\);?/
("|')?
还允许您匹配单引号或双引号