用于匹配css url的正则表达式

时间:2014-02-14 09:24:27

标签: css regex data-url

我有正则表达式

/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;

正则表达式匹配它。我需要匹配通常的图像网址,并忽略数据网址与单引号,双引号或没有它们。

2 个答案:

答案 0 :(得分:2)

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

在这个正则表达式中,它会忽略下面的任何内容(在(之后接受可选空格

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

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

答案 1 :(得分:1)

尝试将模式与("|')?

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

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