2

私は正規表現を持っています

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

CSSで次のような行を検索します

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

そして、行を無視します

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

画像パスを見つけて置き換えるために使用されます。

ただし、データ URL に引用符がある場合

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

正規表現が一致します。通常の画像の URL と一致させ、一重引用符、二重引用符の有無にかかわらずデータ URL を無視する必要があります。

4

2 に答える 2

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

この正規表現では、以下のようなものはすべて無視されます (後にオプションのスペースを受け入れます)(

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

つまり、質問で指定した最初の例にのみ一致します。

于 2014-02-14T10:12:33.550 に答える
1

でパターンを使用してみてください("|')?:

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

("|')?一重引用符または二重引用符に一致させることもできます

于 2014-02-14T09:34:09.560 に答える