zoukankan      html  css  js  c++  java
  • 5.4.3 RegExp构造函数属性

    RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性)。这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。关于这些属性的另一个独特之处,就是可以通过两种方式访问他们。换句话说,这些属性分别有一个长属性名和一个短属性名(Opera是例外,它不支持短属性名)。下表列出了RegExp构造函数的属性。

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


    使用这些属性可以从exec()或text()执行的操作中提取出更具体的信息。看例子:

    1. var text="this has been a short summer";
    2. var pattern=/(.)hort/g;
    3. /*
    4. *注意:Opera不支持input、lastMatch、lastParen和multiline属性
    5. *IE 不支持multiline属性
    6. */
    7. if(pattern.test(text))
    8. {
    9.     alert(RegExp.input); // this has been a short summer
    10.     alert(RegExp.leftContext); //this has been a
    11.     alert(RegExp.rightContext); //summer
    12.     alert(RegExp.lastMatch); //short
    13.     alert(RegExp.lastParen); //s
    14.     alert(RegExp.multiline); //false
    15. }
    复制代码


    以上代码创建了一个模式,匹配任何一个字符串后hort,而且把第一个字符放在了一个捕获组中。

    RegExp构造函数的各个属性返回了下列值:

    • input返回了原始字符串。
    • leftContext属性返回了单词short之前的字符串,而rightContext则返回了short之后的字符串。
    • lastMatch属性返回最近一次与整个正则表达式匹配的字符串,返回short。
    • lastParen属性返回最近一次匹配的捕获组,即例子中的s。


    如上所示,例子中使用的长属性名都可以用对应的短属性名来代替。只不过,由于这些短属性名大都不是有效的ECMAScript标识符,因此必须通过方括号语法来访问他们,如下面例子:

    1. var text="this has been a short summer";
    2. var pattern=/(.)hort/g;
    3. /*
    4. *注意:Opera不支持input、lastMatch、lastParen和multiline属性
    5. *IE 不支持multiline属性
    6. */
    7. if(pattern.test(text))
    8. {
    9.     alert(RegExp.$_); // this has been a short summer
    10.     alert(RegExp.["$ `"]); //this has been a     $和`之间不能有空格,由于编辑器的原因才不得不使用空格分割
    11.     alert(RegExp.["$·"]); //summer
    12.     alert(RegExp.["$ &"]); //short     $和&之间不能有空格,由于编辑器的原因才不得不使用空格分割
    13.     alert(RegExp.["$+"]); //s
    14.     alert(RegExp.["$*"]); //false
    15. }
    复制代码


    除了上面介绍的几个属性以外,还有多达9个用于存储捕获组的构造函数属性。访问这些属性的语法是RegExp.$1、RegExp.$2、...、RegExp.$9,分别用于存储第一个、第二个、...、第九个匹配的捕获组。在调用exec()或text()方法时,这些属性会被自动填充。然后,我们就可以像下面这样来使用它们。

    1. var text="this has been a short summer";
    2. var pattern=/(..)or(.)/g;
    3. if(pattern.test(text))
    4. {
    5.     alert(RegExp.$1);//sh
    6.     alert(RegExp.$2);//t
    7. }
    复制代码


    这里创建了一个包含两个捕获组的模式,并用该模式测试了一个字符串。即使test()方法只返回一个布尔值,但RegExp构造函数的属性$1和$2也会被匹配相应捕获组的字符串自动填充。

            注:我是小小白,欢迎各位大神指出文中不对的地方^_^~~

    =================<< 请读者注意!不保证内容百分之百正确,有误请留言指教!^_^ >>=================
  • 相关阅读:
    【Codeforces Round #240 (Div. 1) 】E—Mashmokh's Designed Problem(Spaly)
    【Codeforces Round #240 (Div. 1) 】E—Mashmokh's Designed Problem(Spaly)
    拦路虎
    拦路虎:jQuery
    图片百分百问题 z-index问题
    惠头无忧——浏览器兼容性
    响应式设计
    老子的第一篇博客
    less 学习 (计划终于执行了啊,不再拖延了)
    工作拦路虎
  • 原文地址:https://www.cnblogs.com/yxlove/p/4504458.html
Copyright © 2011-2022 走看看