构造函数方式创建正则表达式

2018-5-9 22:33| 作者: admin| 查看: 379| 评论: 0|来自: 蚂蚁部落

在JavaScript中创建对象有两种方式:

(1).直接量方式。

(2).构造函数方式。

正则表达式也不列外,先看一通过直接量方式创建正则表达式实例:

[JavaScript] 纯文本查看 复制代码
let reg=/[abc]/g

非常简单,不多介绍,下面介绍一下通过构造函数创建正则表达式。

代码实例如下:

[JavaScript] 纯文本查看 复制代码
let strReg = new RegExp("[abc]");
let str = "abcdef";
str.match(strReg);

上面代码很简单,可以匹配字符串中的字符"a"。

再来看一段代码实例:

[JavaScript] 纯文本查看 复制代码
let dotReg = new RegExp(".");
let dotStr = "abcdef.";
dotStr.match(dotReg);

我们本来的意思是要匹配字符串中的点,但是却匹配了字符中的"a",因为构造函数参数中的点(.)在正则表达式中可以匹配任意字符,代码修改如下:

[JavaScript] 纯文本查看 复制代码
let dotReg = new RegExp("\.");
let dotStr = "abcdef.";
dotStr.match(dotReg);

尽管已经为点(.)转义,但依然匹配字符串中的"a",分析如下:

(1).首先构造函数的参数本身是一个字符串,并不是正则表达式,在字符串中点(.)并无特殊意义。

(2).对点(.)转义后,依然是一个点(.)的本意。

(3).构造成正则表达式后,点(.)可以匹配除了回车符(\r)和换行符(\n)之外的任意字符。

代码最终修改如下:

[JavaScript] 纯文本查看 复制代码
let dotReg = new RegExp("\\.");
let dotStr = "abcdef.";
dotStr.match(dotReg);

将转义字符再次转义,那么最终传递到构造函数中,作为正则表达式的字符串就是\.。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部