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也会被匹配相应捕获组的字符串自动填充。

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

5.4.3 RegExp构造函数属性的更多相关文章

  1. 5.4.1 RegExp实例属性

    RegExp的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息.        1.global:布尔值,表示是否设置了 g 标志.        2.ignoreCase:布尔值,表示 ...

  2. [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配

    本文转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp  ...

  3. 正则-RegExp()构造函数

    上次写了js正则的字面量声明,今天说说RegExp()构造函数声明: var p=/cat/g;   //字面量声明var p=new RegExp('cat','g') //构造函数声明 它两所表达 ...

  4. js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译)

    js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译) 一.总结 1. RegExp的属性和方法,就是RegE ...

  5. js内置构造函数属性修改问题

    在学习js原型时遇到一个问题,Array,Object等内置构造函数部分属性无法修改,我猜测可能是因为浏览器实现的原因造成的. 1.修改name属性无效. <script type=" ...

  6. JS正则表达式从入门到入土(8)—— REGEXP对象属性

    对象属性 常用对象属性主要有以下几种: 1.global: 是否全文搜索,默认false 2.ignore case:是否大小写敏感,默认是false 3.multiline:多行搜索,默认值是fal ...

  7. 引用类型-RegExp类型

    JavaScript高级程序设计(第三版)笔记-第五章-RegExp类型 定义正则表达式有两种方式 1.用字面量形式定义正则表达式: ver expression = /patterns/flags; ...

  8. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  9. JS引用类型之——RegExp

    前言 之前小猪分享过关于正则表达式的一些内容,具体请看传送门,今天小猪来分享怎么在js中使用正则表达式. 定义 ECMAScript通过RegExp类型来支持正则表达式.使用下面类似Perl的语法,就 ...

随机推荐

  1. oracle定时执行计划任务

    show parameter job_queue_processes; alter system set job_queue_processes=10; 1,创建测试表 create table jo ...

  2. npm 常用命令

    npm install xxx 安装模块npm install xxx@1.1.1   安装1.1.1版本的xxxnpm install xxx -g 将模块安装到全局环境中.npm ls 查看安装的 ...

  3. 接着上一个版本在上一个分离access-token和ticket的版本

    上代码: 本次修改将获取token和ticket分离出来,分别封装在函数中: 每个函数最后一个参数是一个回调参数: 回调函数的参数,是这一步中需要处理的结果; 结果怎么处理,根据传递进去的函数: va ...

  4. Java面试题之四

     十六.运行时异常与一般异常有何异同 Java提供了两类主要的异常:runtime exception和checked exception. 1.checked exception:这种异常也就是我们 ...

  5. SMTP协议分析

    SMTP协议分析 第1章.     SMTP概述 1.1.  SMTP在邮件通信中的位置 SMTP,即简单邮件传送协议,所相应RFC文档为RFC821.同http等多数应用层协议一样,它工作在C/S模 ...

  6. oracle 与sql server 部分内置函数替换

    1,trunc--convert oracle: select trunc(sysdate) from dual   输出:2016/5/24 sql server:select CONVERT(va ...

  7. 线性插值(linear interpolation)

    线性插值通常用于:使用离散的样本来重建连续的信号.在计算机图形学中,这些样本可能是纹理.动画关键帧等. template <class T> T Lerp(T& a, T& ...

  8. BZOJ 1491: [NOI2007]社交网络( floyd )

    floyd...求最短路时顺便求出路径数. 时间复杂度O(N^3) ------------------------------------------------------------------ ...

  9. BZOJ 2594: [Wc2006]水管局长数据加强版( LCT )

    离线然后就是维护加边的动态MST, Link cut tree秒掉..不过我写+调了好久...时间复杂度O(NlogN + MlogM) ------------------------------- ...

  10. (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)

    We have already seen how to make jQuery react to the loading of a web page. The $(document).ready()e ...