JS中給正規表示式加變數

2021-07-22 22:51:16 字數 1351 閱讀 2184

前不久同事詢問我js裡面怎麼給正則中新增變數的問題,遂寫篇部落格記錄下。

一、字面量

其實當我們定義乙個字串,乙個陣列,乙個物件等等的時候,我們習慣用字面量來定義,例如:

var s = "string";

var a = [1,2];

var o = {};

如果需要加入變數,那也是十分簡單的事情,比如:

var v = "bl";

var s = "string" + v; //

"stringbl"

var a = [1,v]; //

[1,"bl"]

var o = ; //

但是,如果碰到了用正則字面量,貌似一切就沒這麼好了。

var v = "bl";

var re = /^\d+$/gim;

這時,假如你想給\d+後面加入v這個變數,你會發現,沒法弄。因為無論你怎麼寫,都會被當作正則的一部分來處理。

二、建構函式

在js的世界中。除了null,undefined。其餘皆是物件。

不過,這裡肯定有人說,string、number、boolean怎麼會是物件呢。

其實雖然我上面那句話不準確,但確實是最直觀的感受。因為string、number、boolean在你用的時候,會預設的被相應的基本包裝型別給轉換成物件。

然後我們又知道,在js中,所有的物件都是通過建構函式來生成的。

那麼,我們就可以用建構函式來代替字面量定義法,例如:

var s = new string("string"); //

string物件,tostring()後為"string"

var a = new array(1,2); //

[1,2]

var o = new object(); //

{}

相應的,我們也可以用建構函式來生成正規表示式

var re = new regexp("^\\d+$","gim"); //

注意,反斜槓需要轉義

那麼,給它加變數,就和我們前面寫的給字串加變數一樣了。

var v = "bl";

var re =new regexp("^\\d+" + v + "$","gim"); //

re為/^\d+bl$/gim

至此,最初的問題問題也完全解決了。

另外,還有一種方法是用過eval動態執行一段字串的方法,不過我覺得從各方面來說,都屬下策。

var re = eval("/^\\d+" + v + "$/gim")

js數字正規表示式,js小數正規表示式

js數字正規表示式,js小數正規表示式 是否為數字 僅正數 包括正整數 正小數 0 param value returns function isnumber value 是否為所有數字 正數 負數 包括整數 小數 0 param value returns function isnumberall...

JS 正規表示式

驗證數字的正規表示式集 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩位小數的正實數 0 9 0 9 驗證有1 3位小數的正實數 0 9 0 9 驗證非零的正整數 1 9 0 9 驗證非零的負整數 1 9 0 ...

js正規表示式

用正規表示式模式在字串中執行查詢,並返回包含該查詢結果的乙個陣列。rgexp.exec str 引數rgexp 必選項。包含正規表示式模式和可用標誌的正規表示式物件。str 必選項。要在其中執行查詢的string物件或字串文字。說明如果exec方法沒有找到匹配,則它返回null。如果它找到匹配,則e...