RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性)。这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。关于这些属性的另一个独特之处,就是可以通过两种方式访问它们。换句话说,这些属性分别有一个长属性名和一个短属性名(Opera是例外,它不支持短属性名)。下表列出了RegExp构造函数的属性。
使用这些属性可以从exec()或test()执行的操作中提取出更具体的信息。请看下面的例子:
var text="this has been a short summer";
var pattern=/(.)hort/g;
/*
*注意:Opera不支持input、lastMatch、lastParen和multiline属性
*Internet Explorer不支持multiline属性
*/
if (pattern.test(text)){
alert(RegExp.input); //this has been a short summer
alert(RegExp.leftContext); ,/this has been a
alert (RegExp.rightContext); // summer
alert (RegExp.lastMatch); //short
alert (RegExp.lastParen); //s
alert (RegExp.multiline); //false
}
以上代码创建了一个模式,匹配任何一个字符后跟hort,而且把第一个字符放在了一个捕获组中。RegExp构造函数的各个属性返回了下列值:
◎input属性返回了原始字符串;
leftContext属性返回了单词short之前的字符串,而rightContext属性则返回了short之后的字符串;
lastMatch属性返回最近一次与整个正则表达式匹配的字符串,即short;
lastParen属性返回最近一次匹配的捕获组,即例子中的s。
如前所述,例子使用的长属性名都可以用相应的短属性名来代替。只不过,由于这些短属性名大都不是有效的ECMAScript标识符,因此必须通过方括号语法来访问它们,如下所示:
var text='fthis has been a short summer":
var pattern=,(.)hort/g;
/*
南昌建网站公司前端开发工程师提醒广大站长应该注意:Opera不支持input、lastMatch、lastParen和multiline属性
*Internet Explorer不支持multiline属性
*/
if (pattern. test(text)){
alert(RegExp.$_); //this has been a short summer
alert(RegExp[$ "); //this has been a
alert(RegExp["$'"); //summer
alert(RegExp["$&"); //short alert(RegExp["$+"]); //s
alert(RegExp["$*"])}; //false
}
除了上面介绍的几个属性之外,还有多达9个用于存储捕获组的构造函数属性。访问这些属性伪语法是RegExp.$1、RegExp. $2 "'RegExp. $9,分别用于存储第一、第二……第九个匹配的捕获组.在调用exec()或test()方法时,这些属性会被自动填充。然后,我们就可以像下面这样来使用它们:
var text="this has been a short summer";
var pattern=/(..)or(.)/g;
if (pattern.test (text)){
alert (RegExp,$l); //sh
alert (RegExp.$2); //t
}
这里创建了一个包含两个捕获组的模式,并用该模式测试了一个字符串。即使test()方法只返回一个布尔值,但RegExp构造函数的属性$1和$2也会被匹配相应捕获组的字符串自动填充。
希望本文对广大站长或从事企业网站建设公司的团队有所帮助,如对此不太理解的,可以与南昌网络公司百恒网络技术部联系。我们很高兴与广大站长和从事企业网站建设公司技术人员分享我们的技术和经验。