正则表达式 - 替换样式标记中的URL

时间:2013-09-24 14:54:38

标签: css regex stylesheet

我搜索了谷歌和stackoverflow但没有找到一个好的答案。我也是自己尝试过的,但我没有正则表达的大师。

我的目标是用绝对版本替换html样式标记中的所有相对网址。

e.g。

  • style="url(/test.png)"style="url(http://mysite.com/test.png)"
  • style="url("/test.png")"style="url("http://mysite.com/test.png")"
  • style="url('/test.png')"style="url('http://mysite.com/test.png')"
  • style="url(../test.png)"style="url(http://mysite.com/test.png)"
  • style="url("../test.png")"style="url('http://mysite.com/test.png')"
  • style="url('../test.png')"style="url('http://mysite.com/test.png')"

等等。

这里我尝试使用我的可怜的正则表达式“skils”

url\((?<Url>[^\)]*)\)

给我“url”功能中的url。

提前感谢!

1 个答案:

答案 0 :(得分:1)

好吧,你可以试试正则表达式:

style="url\((['"])?(?:\.\.)?(?<url>[^'"]+)\1?\)"

并替换为:

style="url($1http://mysite.com$2$1)"

regex101 demo

(['"])?会捕获引号,如果它们存在并在\1?

再次使用它们

([^'"]+)将捕获网址。