(……续例11)
例12:全局RegExp属性
- void function reg_12()
- {
- var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
- if (ver >= 5.5)
- {
- var s = "Live for nothing,die for something";
- var r = /\w+/g;
- while ((r.exec(s)) != null)
- alert(RegExp.index + "-" + RegExp.lastIndex + ": " + RegExp.lastMatch);
- }
- else
- {
- alert("只有JScript 5.5及以上版本支持该功能。");
- }
- }
行3:检测浏览器的JavaScript脚本引擎,分别获取主版本号和副版本号,然后用.字符连接起来并通过Number()方法转换为数字,从而判断其是否为5.5及以上的版本(低于5.5的版本不支持全局RegExp对象)。
行7:\w符号匹配包括下划线的任何单词字符,等价于'[A-Za-z0-9_]'。由于使用了开关g,因此将匹配每一个,注意,这里并没有使用^符号要求从字符串开始进行匹配。
行8:该循环只要正则表达式匹配到内容就循环,因为有开关g,所以每次都会向后移动一个单词。
行9:通过访问全局对象RegExp的三个属性,显示各个单词的位置及内容。
其中,index属性返回字符位置,它是查找字符串中第一个成功匹配的开始位置;lastIndex属性返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。这两个属性都是基于下标0开始的;显然lastIndex属性会比单词的结束字符所在索引大1。lastMatch属性返回正则表达式搜索过程中的最后匹配的内容。
运行结果:while循环会执行6次,例如第1次显示0-4:Live。
(未完待续……)
本文转自 BlackAlpha 51CTO博客,原文链接:http://blog.51cto.com/mengliao/468186,如需转载请自行联系原作者