全国服务热线:0776-5859998
消息中心在线申请微营销

记录下两个正则表达式的使用

:2015-06-13 11:48     阅读数:     分享到:

昨天在做mergeCSS的时候遇到两个正则匹配的问题,也花了不少的时间,最后在CSS森林群的 CE 同学帮助下,才完成了这俩正则,特别记录下,以后可能也会用到。

第一个是匹配图片路径的问题,要处理的字符串是:

以下为引用的内容:

background:url(demo.jpg);background-image:url(demo.gif);

我一开始写的是:

以下为引用的内容:

url\((.*)\)

得到的结果为:

以下为引用的内容:

url(demo.jpg);background-image:url(demo.gif);

可以看到,把两个图片匹配成了一个,结果不是所希望得到的。把它改为惰性匹配,如下:

以下为引用的内容:

url\((.*?)\)

得到的结果为:

以下为引用的内容:

url(demo.jpg);
url(demo.gif);

匹配到了两个图片,是所要的结果了。:)

第二个问题是正则表达式中使用变量的问题,简单解释下为什么加变量也会成为问题,先看下 RegExp 对象 和 replace() 方法 的说明,Javascript的正则一般的书写方式是:

以下为引用的内容:

/正则表达式/匹配模式

所有在“/”中间的内容都会被当成正则表达式,于是变量名也就被当成字符串了。不加“/”?也行,不过不加“/”的话就不能指定匹配模式,也就只能匹配到第一个。

以下为引用的内容:

通过RegExp对象可以生成一个新的 RegExp 对象,具有指定的模式和标志。

于是:

以下为引用的内容:

new RegExp("url\\((" + 变量名 + ")\\)", "g");

这里要注意的是使用“\\”的方式的方式进行转义,因为

以下为引用的内容:

如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

这个过程中“\\”会被转换成“\”,即上面的结果是:

以下为引用的内容:

/url\((变量内容)\)/g

原文地址:http://www.cssforest.org/blog/index.php?id=153


新案例
新签约
  1. 乾涵科技-高薪招聘网站PHP程序员...
  2. 成功签约广州市标准化协会网站建设协议...
  3. 成功签约佛山市领缝缝纫设备有限公司网...
  4. 成功签约深圳市创景轩园林工程有限公司...
  5. 成功签约广州狮子婴幼公学网站建设协议...
  6. 广州名阳建筑设计有限公司网站建设项目...
  7. 成功签约佛山市其乐教育投资有限公司网...
  8. 成功签约广州力恩普投资管理有限公司网...
新资讯
  1. 苹果所持现金可买Groupon+Twitter+Zynga...
  2. 世纪佳缘盈利模式受质疑 面临社交网站冲...
  3. 今年北京将采取更严厉手段打击盗版...
  4. 开心网收缩团购突裁百余人 一天内先签约...
  5. 开心网回应团购调整争论:必将负责到底...
  6. Twitter着力提升移动体验 看好HTML5长远前景...
  7. 破除有关Google面试的谣言...
  8. Windows 8也能“穿越”了...