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

作者:Ghost 来源:css森林 时间:2009-11-30 12:56:00 

昨天在做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

标签:正则表达式,CSS,RegExp
0
投稿

猜你喜欢

  • XML与HTML的结合(下)

    2008-09-05 17:20:00
  • Python Pandas中根据列的值选取多行数据

    2023-02-16 04:17:59
  • Python如何判断数独是否合法

    2023-05-18 06:09:45
  • 解决MySQL去除密码登录告警的问题

    2024-01-26 12:33:21
  • Python数学建模StatsModels统计回归可视化示例详解

    2023-10-09 02:16:54
  • pytorch中可视化之hook钩子

    2021-07-30 04:26:23
  • 页面表达常用方式

    2010-05-27 12:42:00
  • Python 网络编程说明第1/2页

    2023-05-07 13:25:13
  • python图片格式转换脚本

    2023-06-20 04:18:06
  • python实现的分析并统计nginx日志数据功能示例

    2023-07-30 20:08:15
  • JavaScript ES6中const、let与var的对比详解

    2024-05-22 10:37:36
  • 定义列表 dt dl

    2008-08-03 17:14:00
  • Bootstrap基本样式学习笔记之表单(3)

    2024-06-05 09:11:39
  • MySQL事务处理与应用简析

    2024-01-21 09:01:24
  • Python Django框架模板渲染功能示例

    2023-03-12 17:39:03
  • 使用AJAX的一个简单的例子

    2007-09-21 17:55:00
  • Mysql数据库中数据表的优化、外键与三范式用法实例分析

    2024-01-23 10:09:00
  • explain分析sql效率的方法

    2024-01-22 01:26:55
  • Python 3.x踩坑实战汇总

    2021-04-21 12:25:47
  • 使用python切片实现二维数组复制示例

    2021-11-02 22:24:41
  • asp之家 网络编程 m.aspxhome.com