在JavaScript中的每个正则表达式都是一个对象。这些对象有下面的一些属性。
1, 实例属性:RegExp的实例有一些开发人员可以使用的属性。
global - Boolean值,表示g(全局选项)是否设置
ignoreCase - Boolean值,表示i(忽略大小写选项)是否设置
lastIndex - 整数,代表下次匹配将会从哪个字符位置开始(只有当使用exec()或test()函数才会填入,否则为0
multiline - Boolean值,表示m(多行模式选项)是否设置
source - 正则表达式的源字符串形式。例如表达式/[ba]*/的source将返回"[ba]*"
在这些属性中,真正有用的是lastIndex,它可以告诉你正则表达式在某个字符串中停止之前,查找乐多元:
var sToMatch = "bbq is short for barbecue";
var regB = /b/g;
regB.exec(sToMatch);
alert(regB.lastIndex); // output "1";
regB.exec(sToMatch);
alert(regB.lastIndex); // output "2";
regB.exec(sToMatch);
alert(regB.lastIndex); // output "18";
regB.exec(sToMatch);
alert(regB.lastIndex); // output "21";
如果想从头开始匹配,可以将lastIndex设为0.
2, 静态属性: 静态属性对所有的正则表达式都有效。这些属性都有两个名字: 一个复杂名字和一个以$开头的简短名字,如下:
长名 短名 描述
input $_ 最后用于匹配的字符串(传递给exec()或test()的字符串)
lastMatch $& 最后匹配的字符
lastParen $+ 最后匹配的分组
leftContext $` 在上次匹配的前面的子串
multiline $* 用于指定是否所有的表达式都使用多行模式的选项
rightContext $' 在上次匹配之后的子串
这些属性可以告诉你,关于刚使用的exec()或test()完成的匹配的一些特定信息。如:
var sToMatch = "this has been a short, short summer";
var regShort = /(s)hort)/g;
regShort.test(sToMatch);
alert(RegExp.input); // output "this has been a short, short summer"
alert(RegExp.leftContext); // output "this has been a "
alert(RegExp.rightContext); // output ", short summer"
alert(RegExp.lastMatch); // output "short";
alert(RegExp.lastParen); // output "s"
记住,每次执行exec()或test()时,所有的属性(除multiline)都会被重新设置。