(……续例1)
例2:匹配成对的HTML标记
- void function reg_02() //匹配成对的HTML标记
- {
- var s1 = "<body bgcolor=\"#FFFFFF\">Mengliao</body>",
- s2 = "<h3 class=\"s1\" align=\"center\">Bosun Network</h3>",
- s3 = "<div>梦辽软件</DIV>",
- s4 = "<div>Baiyu</span>";
- var r = /^<([a-z]+[a-z0-9]*).*>.*<\/\1>$/ig;
- for (i = 1; i <= 4; i++)
- {
- t = "alert(s" + i + ".match(r));";
- eval(t);
- }
- }
行7:这是ECMAScript另外一种实例化正则表达式的方法,即使用两个/符号作为开始和结束,igm参数放在最后。
这个例子要求匹配成对的HTML标记,既然是成对,一定要在匹配前半个HTML标记后,将其保存,否则无法判断后半个标记是否与前半个标记一样,这需要使用正则表达式的组。
^符号从行首开始,<符号和>符号匹配HTML标记的尖括号,就是<>字符本身。
()符号表示将其中匹配的内容定义为一个组,其名称为1。
[a-z]符号表示一个集合,由小写字母构成,当然,由于使用了开关i,所以大小写将不再敏感。
+符号表示匹配一次或多次,即至少需要一次。
同样[a-z0-9]符号表示由小写字母和数字构成的集合;*符号表示匹配0次或多次,即可以没有此部分。
.符号表示任意字符。
\/符号表示转义字符,即HTML结束标记中的/字符。
\1符号表示引用前面匹配的组1,当然,前面用()符号匹配的只有组1,如果有多个可以指定\2或\3等,最多指定9个。
$符号表示匹配至行尾。
开关ig与例1是一样的。
运行结果:除了最后一个,其余都是可以匹配的。
(未完待续……)
本文转自 BlackAlpha 51CTO博客,原文链接:http://blog.51cto.com/mengliao/466028,如需转载请自行联系原作者