js中使用正则表达式(三)RegExp对象构造函数属性介绍

来源:互联网 发布:电子科学与技术知乎 编辑:程序博客网 时间:2024/06/09 12:31

1、RegExp构造函数属性可以通过两种方式访问:长属性名和短属性名方式,其属性有:

    长属性名    短属性名    说明    input       $_     最近一次要匹配的字符串,即原字符串    lastMatch   $&     最近一次的匹配项,即匹配到的字符串    lastParent  $+     最近一次的匹配捕获组,即捕获组匹配到的字符串    leftContext $`     input字符串中lastMatch之前的文本    rightContext    $'     input字符串中lastMatch之后的文本    multiline   $*     布尔值,表示所有表达式是否都使用多行匹配模式,IEOpera未实现此属性

2、使用上述属性,可以从exec()和test()方法中提取出更多信息,例如:
//匹配模式说明:匹配任何一个字符后面跟hort,而且把第一个字符放到捕获组中

    var text = "this has bean a short summer";    var regx = /(.)hort/g;    if(regx.test()){        alert(RegExp.input);//this has bean a short summer        alert(RegExp.lastMatch);//short        alert(RegExp.lastParent);//s        alert(RegExp.leftContext);//this has bean a         alert(RegExp.rightContext);// summer        alert(RegExp.multiline);//false    }

3、上述使用的是长属性名方式访问RegExp属性值,也可以通过短属性名方式访问,因短属性名大都不是有效的ECMAScript标示符,因此必须通过方括号来访问,例如:

    if(regx.test()){        alert(RegExp.$_);//this has bean a short summer        alert(RegExp["$&"]);//short        alert(RegExp["$+"]);//s        alert(RegExp["$`"]);//this has bean a         alert(RegExp["$'"]);// summer        alert(RegExp["$*"]);//false    }

4、除了上述描述的属性之外,还有9个用于存储捕获组的构造函数属性,访问这些属性的语法是,RegExp.$1、RegExp.$2。。。RegExp.$9,分别存储第一个、第二个。。。第九个捕获组字符串。调用exec()或test()方法时,这些属性会被自动填充,例如:
//匹配模式说明:匹配任何两个字符后面跟or,or后面跟任意一个字符,包含两个捕获组

    var text = "this has bean a short summer";    var regx = /(..)or(.)/g;    if(regx.test()){        alert(RegExp.$1);//sh        alert(RegExp.$2);//t    }
0 0
原创粉丝点击