建構函式方式建立正規表示式

admin發表於2018-05-09

在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);

將轉義字元再次轉義,那麼最終傳遞到建構函式中,作為正規表示式的字串就是\.。

相關文章