5.4.3 RegExp构造函数属性
RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性)。这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。关于这些属性的另一个独特之处,就是可以通过两种方式访问他们。换句话说,这些属性分别有一个长属性名和一个短属性名(Opera是例外,它不支持短属性名)。下表列出了RegExp构造函数的属性。
长属性名 | 短属性名 | 说明 |
input | $_ | 最近一次要匹配的字符串。Opera未实现此属性 |
lastMatch | $& | 最近一次的匹配性。 Opera未实现此属性 |
lastParen | $+ | 最近一次匹配的捕获组。 Opera未实现此属性 |
leftContext | $` | input字符串中lastMatch之前的文本 |
multiline | $* | 布尔值,表示是否所有表达式都使用多行模式。IE和Opera未实现此属性 |
rightContext | $· | input字符串中lastMatch之后的文本 |
使用这些属性可以从exec()或text()执行的操作中提取出更具体的信息。看例子:
- var text="this has been a short summer";
- var pattern=/(.)hort/g;
- /*
- *注意:Opera不支持input、lastMatch、lastParen和multiline属性
- *IE 不支持multiline属性
- */
- if(pattern.test(text))
- {
- alert(RegExp.input); // this has been a short summer
- alert(RegExp.leftContext); //this has been a
- alert(RegExp.rightContext); //summer
- alert(RegExp.lastMatch); //short
- alert(RegExp.lastParen); //s
- alert(RegExp.multiline); //false
- }
复制代码
以上代码创建了一个模式,匹配任何一个字符串后hort,而且把第一个字符放在了一个捕获组中。
RegExp构造函数的各个属性返回了下列值:
- input返回了原始字符串。
- leftContext属性返回了单词short之前的字符串,而rightContext则返回了short之后的字符串。
- lastMatch属性返回最近一次与整个正则表达式匹配的字符串,返回short。
- lastParen属性返回最近一次匹配的捕获组,即例子中的s。
如上所示,例子中使用的长属性名都可以用对应的短属性名来代替。只不过,由于这些短属性名大都不是有效的ECMAScript标识符,因此必须通过方括号语法来访问他们,如下面例子:
- var text="this has been a short summer";
- var pattern=/(.)hort/g;
- /*
- *注意:Opera不支持input、lastMatch、lastParen和multiline属性
- *IE 不支持multiline属性
- */
- if(pattern.test(text))
- {
- alert(RegExp.$_); // this has been a short summer
- alert(RegExp.["$ `"]); //this has been a $和`之间不能有空格,由于编辑器的原因才不得不使用空格分割
- alert(RegExp.["$·"]); //summer
- alert(RegExp.["$ &"]); //short $和&之间不能有空格,由于编辑器的原因才不得不使用空格分割
- alert(RegExp.["$+"]); //s
- alert(RegExp.["$*"]); //false
- }
复制代码
除了上面介绍的几个属性以外,还有多达9个用于存储捕获组的构造函数属性。访问这些属性的语法是RegExp.$1、RegExp.$2、...、RegExp.$9,分别用于存储第一个、第二个、...、第九个匹配的捕获组。在调用exec()或text()方法时,这些属性会被自动填充。然后,我们就可以像下面这样来使用它们。
- var text="this has been a short summer";
- var pattern=/(..)or(.)/g;
- if(pattern.test(text))
- {
- alert(RegExp.$1);//sh
- alert(RegExp.$2);//t
- }
复制代码
这里创建了一个包含两个捕获组的模式,并用该模式测试了一个字符串。即使test()方法只返回一个布尔值,但RegExp构造函数的属性$1和$2也会被匹配相应捕获组的字符串自动填充。
注:我是小小白,欢迎各位大神指出文中不对的地方^_^~~
5.4.3 RegExp构造函数属性的更多相关文章
- 5.4.1 RegExp实例属性
RegExp的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息. 1.global:布尔值,表示是否设置了 g 标志. 2.ignoreCase:布尔值,表示 ...
- [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配
本文转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp ...
- 正则-RegExp()构造函数
上次写了js正则的字面量声明,今天说说RegExp()构造函数声明: var p=/cat/g; //字面量声明var p=new RegExp('cat','g') //构造函数声明 它两所表达 ...
- js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译)
js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译) 一.总结 1. RegExp的属性和方法,就是RegE ...
- js内置构造函数属性修改问题
在学习js原型时遇到一个问题,Array,Object等内置构造函数部分属性无法修改,我猜测可能是因为浏览器实现的原因造成的. 1.修改name属性无效. <script type=" ...
- JS正则表达式从入门到入土(8)—— REGEXP对象属性
对象属性 常用对象属性主要有以下几种: 1.global: 是否全文搜索,默认false 2.ignore case:是否大小写敏感,默认是false 3.multiline:多行搜索,默认值是fal ...
- 引用类型-RegExp类型
JavaScript高级程序设计(第三版)笔记-第五章-RegExp类型 定义正则表达式有两种方式 1.用字面量形式定义正则表达式: ver expression = /patterns/flags; ...
- javascript类型系统——正则表达式RegExp类型
× 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...
- JS引用类型之——RegExp
前言 之前小猪分享过关于正则表达式的一些内容,具体请看传送门,今天小猪来分享怎么在js中使用正则表达式. 定义 ECMAScript通过RegExp类型来支持正则表达式.使用下面类似Perl的语法,就 ...
随机推荐
- opencv 图像修复函数
void cv::inpaint( const Mat& src, const Mat& mask, Mat& dst, double inpaintRange, int fl ...
- express手工实现session原理
var express = require('express'); var cookieParser = require('cookie-parser'); var bodyParser = requ ...
- C# 想要程序文件移动 而数据保持相对位置
如果用的数据库是access数据库 可以把数据库文件放到bin\debug下面,引用相对位置就可以了 如果程序中有上载文件,而程序需要使用到该文件,那么我们最好也是引用相对文件,我们只需要在数据表中的 ...
- office2010安装出错,windows installer服务不能更新一个或多个受保护的windows文件
转自:http://www.08lr.cn/article/1985.html office2010安装过程中出现如下图错误:windows installer 服务不能更新一个或多个受保护的wind ...
- COM组件简介
面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展. 按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台机器上, ...
- SQL2008 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。
'OFFSET' 附近有语法错误.在 FETCH 语句中选项 NEXT 的用法无效. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出 ...
- hadoop之hdfs学习
简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...
- 删除除了 id 号不同,其他都相同的学生冗余信息
删除除了 id 号不同,其他都相同的学生冗余信息2.学生表 如下:id 号 学号 姓名 课程编号 课程名称 分数1 2005001 张三 0001 数学 692 2005002 李四 0001 数学 ...
- FSM(有限状态机)
游戏引擎是有限状态机最为成功的应用领域之一,由于设计良好的状态机能够被用来取代部分的人工智能算法,因此游戏中的每个角色或者器件都有可能内嵌一个状态机.考虑RPG游戏中城门这样一个简单对象,它具有打开( ...
- Android 常用动画小结
1. 渐入动画 // Request the next activity transition (here starting a new one). startActivity(new Intent( ...