关于js正则RegExp构造函数属性,我前面的一篇文章中提及过,js正则表达式常用函数方法及简单应用,有兴趣的可以去看下。
但是呢,这篇文章主要讲了js正则表达式的常用函数,对属性只是简单一提,我今天稍微详细的和大家讲讲!
问个问题
一、(RegExp.$_)、(RegExp["$&"])是什么意思呢?
二、我们经常看到的(RegExp.$1)又代表什么呢?
假如看了上面两个问题,你不清楚是什么意思,没有关系,这篇文章主要是讲这些正则表达式构造函数属性的。其中第一个问题符号代表正则表达式构造函数属性的简写。第二个是用于储存捕获组的构造函数属性。
正则RegExp构造函数属性
关于属性的定义,我在这里在重新提一下:
input (简写为$_) 最近一次要匹配的字符串。
lastMatch(简写$&) 最近一次的匹配项
lastParen(简写$+) 最近一次匹配的捕获组。
leftContext(简写$`) input字符串中lastMatch之前的文本
rightContext(简写$') input字符串中lastMatch之后的文本
multiline(简写$*) 布尔值,表示是否所有表达式都使用多行模式。
举例说明
看定义太痛苦了,我们还是举个例子来看下。
var text ="you are in haorooms 博客,看文章呢";
var pattern =/(.)aorooms/g;
if(pattern.test(text)){
console.log(RegExp.$_); //you are in haorooms 博客,看文章呢
console.log(RegExp["$`"]);//you are in
console.log(RegExp["$'"]);//博客,看文章呢
console.log(RegExp["$&"]);//haorooms
console.log(RegExp["$+"]);//h
console.log(RegExp["$*"]);//false
}
当然,也可以不用简写。(有些属性有浏览器兼容问题,Opera和部分IE不支持)。
另外一个问题,大家也看到了,有的我是用“.”有的是用[],其实作用是一样的。当中文或者特殊符号的时候,我们通常用[]。
存储捕获组的构造函数属性
这些属性的语法是(RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$4,RegExp.$5,RegExp.$6,RegExp.$7,RegExp.$8,RegExp.$9),一共有9个。官方的解释是,这些可以捕获组的字符串的自动填充。其实,说简单的,就是可以获得()括号内匹配的字符串。
例子:
var text ="you are in haorooms 博客,看文章呢";
var pattern =/(.)ao(..)om(.)/g;
if(pattern.test(text)){
console.log(RegExp.$1);//h
console.log(RegExp.$2);//ro
console.log(RegExp.$3);//s
}
关于正则RegExp构造函数属性就先说到这里。有问题可以留言交流哦!