正则表达式是一个十分有用的搜索匹配工具,比一般的搜索查找函数功能强很多。在今天的项目中就遇到了一个问题,体会很深。

遇到的问题


今天想将一个css文件的类名进行改写。因为css类名经常冲突的原因。就想到了使用替换。那么具体要替换什么呢?因为是类名,那么当然替换点了(.)。乍一看,挺不错的。但实际操作做就遇到了问题。比喻下面的代码片段:

.panel {
  margin-bottom: 20px;
  background-color: #ffffff;
  border: 1px solid transparent;
  border-radius: 4px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}

上面如果将. 替换为.zmax-  那么.panel类自然可以替换为.zmax-panel。很好的解决了我的问题,可是我发现0.05这个数字也替换成了 0.zmax-05了。这显然不是我需要的结果。

 

如何解决这个问题


进过仔细的分析,我发现我需要替换的. 应该是后一位必须是字母。也就是是说,如果有一个匹配能够判断后面是什么就匹配的话,那就匹配成功。这个就是本文开头提到的零宽度断言。他的意思是说,只有后面的某一些内容符合的情况下,这个正则才匹配。

关于零宽度断言的专业定义如下:

(?=exp),他断言自身出现的位置的后面能匹配表达式exp.

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前