记录下两个正则表达式的使用
作者: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
猜你喜欢
- 树形目录显示程序问题描述:在我们项目中常常会出现自关联的数据表,如果我们从整体看去,整个表就呈现为一个树形数据结构(对于复杂的情况,它可能变
- iframe的防插与强插(一)中介绍了“市面上”能见到的两种防御被第三方网站iframe的方法,以及相应的变态突破方法。貌似把“受害人”逼上
- 工作时需要取得MySQL中一个表的字段是否存在于是就使用Describe命令来判断mysql_connect(localhost, root
- 你用过css么?当然,我是指你喜欢做网页的话,用过?很好,那你用过它的特效么?没有?那请跟我来。让我先
- check.asp 代码如下:<% '''''''''
- 摘要: 本文由简到繁地介绍了以jQuery作为蓝本的js框架开发步聚, 希望借助本文大家对jQuery这样的框架内部有一个大致的认识。推荐:
- l当今世界,技术发展迅猛,不论是什么行业,大多数关键数据都是放置于数据库中进行管理的,一来目前数据库技术已经相当成熟,二来其管理功能非常强大
- 在向大家详细介绍Linux mysql之前,首先让大家了解下Linux mysql,然后全面介绍Linux mysql,希望对大家有用。1.
- What? 什么是面包屑面包屑是作为辅助和补充的导航方式(secondary navigation scheme),它能让用户知道在网站或应
- 查询一天:select * from table where to_days(column_time) = to_days(now());s
- 软件环境: 1、操作系统:Windows 2000 Server 2、数 据 库:Oracle 8i R2 (8.1.7) for NT 企
- 今天在 经纬 同学blog看到的。有这么一段代码:<ul id="demo"><li>
- 生成HTML方法主要步骤只有两个:一、获取要生成的html文件的内容二、将获取的html文件内容保存为html文件我在这里主要说明的只是第一
- 因此为了节省服务器资源,应该尽可能关闭连接以释放连接所占有的资源,这种关闭记录集的连接而不关闭记录集的技术叫做断开记录集,这个记录集本身则称
- ASP由于是一种古老的语言,它的一些功能对UTF-8支持非常差。比如,你想生成一个UTF-8格式的文件,使用常用的 scrīpting.Fi
- 一般我们是利用Session对象来防止通过“刷新”增加计数器的访问量的,看看下面的做法;<%If IsEmpty(Sessi
- 如何为XHTML做好准备,XHTML与HTML 4.01标准没有太多的不同。所以将你的代码升级至4.01是个不错的开始。HTML 4.01参
- /usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysqlunzip mysql-5.
- 装了 Access 2003 安全更新 (KB981716) 之后 Access 打不开,office2003-KB981716-FullF
- asp+access用户登录代码,loginnew.asp网面包含了登录框及验证用户的代码an.mdb数据库名fd表名y_username用