1:RegExp构造函数包含一些属性,这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化;
2:这些属性的另一个独特之处,就是可以通过2种方式访问他们,换句话说,这些属性分别有一个长属性和短属性名(opera不支持短属性);
长属性名 | 短属性名 | 说明 |
---|---|---|
input | $_ | 最近一次要匹配的字符串。opera未实现这个属性 |
lastMatch | $& | 最近一次地匹配项,opera未实现这个属性 |
lastParen | $+ | 最近一次匹配的捕获组,opera未实现这个属性 |
leftContext | &` | input字符串中lastMatch之前的文本 |
Multiline | $* | 布尔值,表示是否所有表达式都使用多行模式;所有浏览器都不再实现该属性 |
rightContext | $’ | input字符串中lastMatch之后的文本 |
var text='this has been a short summer'
//匹配任何一个字符后跟hort,而且吧第一个字符放在了一个捕获组中;
var pattern=/(.)hort/g
if(pattern.test(text)){
console.log(RegExp)
console.log(RegExp.input) //RegExp.$_
console.log(RegExp.lastMatch) //RegExp.["$&"]
console.log(RegExp.leftContext) //RegExp.["&`"]
console.log(RegExp.rightContext) //RegExp.["$'"]
console.log(RegExp.lastParen) //RegExp.["$+"]
console.log(RegExp.multiline) //RegExp.["$* "]
}
3:还有多达9个用于存储捕获数组的构造函数属性;访问这些属性的语法是
RegExp.$1、RegExp.$2、RegExp.$3、RegExp.$4、RegExp.$5、RegExp.$6、RegExp.$7、RegExp.$8、RegExp.$9、
分别用于存储第一、第二、、、、、、第九个匹配的捕获组;再调用exec或者test方法时,这些属性会被自动填充;
var text='this has been a short summer'
var pattern=/(..)or(.)/g
if(pattern.test(text)){
console.log(RegExp.$1) //sh
console.log(RegExp.$2) //t
}