正则RegExp构造函数属性详解

2300次浏览

关于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构造函数属性就先说到这里。有问题可以留言交流哦!

Tags: RegExp正则

相关文章: