正则表达式最早在perl语言中呈现,在此之前为了测试字符串中是否存在某个字符,不得不利用如ChatAt()、indexOf()等函数对字符串轮回校验。一旦验证的条件巨大起来(好比身份证校验)实现就变得相当繁杂和难题。为此人们就发现了正则语法,利用一个非凡的字符串作为模板,对输入的字符流举办匹配,这跟电子厂的PCB板检测道理很相似。正则表达式在差异东西中实现方法固然有点差异,但表达语法沟通,一般都遵循了ECMPScript 的RegExp类语法尺度,详细可以查察,《ECMAScript Language Specification》中有关RegExp的描写,假如想深入相识正则表达式,是个不错的网站。
网页代码优化的最主要事情的就是对页面源代码的简化。对付用网页东西或其他转换东西(好比Word—>Html)建造的网页,简化与未简化的网页巨细相差往往在一倍以上。别小看简化的浸染,对付今朝的互联网带宽来说,将50kb的页面缩小成20kb大概感受不到欣赏速度的晋升,但对小型手持设备如手机、PDA来说,这长短常致命的,不只是带宽的问题,页面代码越多,欣赏器理会与导航(定位)的速度就越慢,耗损的内存也越锋利。网页代码的精简水平是权衡网页设计人员程度坎坷的一个重要尺度。
闲话说了这么多,此刻进入正题。代码简化事情是通过对文本举办“查找替换”实现的。普通的全字符串匹配的查找替换可以帮我们完成大部门的代码简化成果,对付有条件的简化,必需利用正则表达式举办处理惩罚。根基上带有文本编辑成果的编辑器(比windows写字板高级点的)都带有支持正则表达式的“查找替换”成果。由于是对网页代码举办优化,因此我们照旧利用专门的DreamWeaver或FrontPage举办操纵。这两个东西都带有html代码优化成果,但根基上都不能满意我们的要求。并且优化的成果都可以通过利用正则表达式举办实现。FrontPage正则表达式的许多标志跟尺度的差异(真不大白ms为什么总是要本身搞别的一套-_-!!),这里我只先容适合DreamWeaver的要领。
应用一:删除空缺标签
像<span></span>、<b></b>这类页面编辑后遗留的空缺标签是可以清理的,但要留意的是,在一些应用中(如ajax的回显)大概会用到一些有id属性的空缺标签。
查找 替换 <(.*)/b.*?>/s*<//1>
用这个也可以删除一些不须要的标签,只要/s*替换成捕捉组:
查找 替换 <(.*)/b.*?>((?:[^<//1]|/s)*)<//1> $2
记得把.*换成你要替换的标签,别的它无法处理惩罚嵌套的标签。但改观一下,可以处理惩罚嵌套带差异属性的沟通标签。
应用二:删除文本中的html标签
查找 替换 <(?:.|/s)*?>
应用三:删除多余的空缺
好比把<div id=”” >替换为<div id=””>
查找 替换 /s{2,} (一个空格) /s{1,}(.|/)> $1>
应用四:标签归并
好比把<b><b>abc</b>defedd</b>替换成<b>abcdefedd</b>
对多层嵌套的布局必需一步步“脱壳”:
查找 替换 (<(.*)/b.*?>)((?:[^</2]|/s)*?)/1((?:.|/s)*?)<//2>((?:.|/s)*?)<//2> <$2>$3$4$5</$2>
这个要领一次只能归并一个内嵌标签,要多替换屡次。
最好指定(.*)中.*代表的详细标签,制止归并了不应归并的标签。好比b或font,假如要归并带属性的标签,只需要把<(.*)/b.*?>改成<(.|/s)*?>就可以了。
应用五:将具有特定属性的标签用css引用简化
假设要把
<td bgcolor=”#FFFFFF” width=”20px”>换成
<td bgcolor=”#FFFFFF” class=”style1”>
查找 替换 <(.*)/b(.*)width="20px"((.|s)*)> <$1 $2 class=”style1” $3>
你需要将.*换成要处理惩罚的标签。
触类旁通,我们可以把width=”20px”的td加宽2倍
查找 替换 <(.*)/b(.*)width="20px"((.|s)*)> <$1 $2$3>
应用六:删除html注释
查找 替换 <!(.|/s)*?> <!--(.|/s)*?-->