JavaScript建立正規表示式

admin發表於2018-08-05

一.直接量方式:

直接量方式建立正規表示式,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
/\bant/

使用兩個斜槓(/)包裹規則即可建立一個RegExp物件直接量。

最後一個斜槓後面可以規定修飾符,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
/\bant/g

規定執行全域性匹配,也就是找到所有的匹配;正規表示式修飾符可以參閱正規表示式修飾符一章節。

二.RegExp建構函式方式:

與其他物件類似,使用RegExp建構函式可以建立正規表示式物件例項。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var reg=new RegExp("\\bant");

RegExp建構函式具有兩個引數:

(1).第一個引數規定了正規表示式匹配規則。

(2).第二個引數可選,規定正規表示式修飾符。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var str="Javascript is not java"; 
var Reg=new RegExp("java","gi"); 
console.log(str.match(Reg));

建構函式第二個引數規是修飾符,規定全域性匹配且不區分大小寫,所以將會匹配到字串"Java"和"java"。

RegExp建構函式第一個引數既可以是字串也可以是正規表示式:

(1).引數是字串:

如果引數是字串,則必須符合正規表示式規則,例如:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var str="Javascript is not java"; 
var Reg=RegExp("\\b\\w","gi"); 
console.log(str.match(Reg));

正規表示式將匹配字串中每一個單詞的首字母。

特別說明:由於傳遞的是字串,所以對反斜槓要使用轉移字元,否則正則語法的反斜槓無法傳遞。

(2).引數是正規表示式:

建構函式將會使用與正規表示式引數相同的匹配模式和修飾符建立一個新的RegExp物件。

第一個引數是正規表示式時候,第二個引數必須省略,否則會出現錯誤。

特別說明:ES2015對此作了修正,第二個引數是可選的,具體參閱ES2015 正規表示式新增特性一章節。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var str="Javascript is not java"; 
var reg=RegExp("\\b\\w","gi"); 
var newReg=new RegExp(reg);
var newSecondReg=new RegExp(/\b\w/gi);
console.log(str.match(newReg));
console.log(str.match(newSecondReg));

正規表示式物件reg是RegExp建構函式的引數,建立一個和reg匹配規則相同的新物件。

如果不使用new運算子,RegExp被當做普通函式使用,通常情況下和建構函式的作用一樣,但當引數為正規表示式的時候,不帶new的時候返回作為引數的正規表示式物件,而不會建立一個新的RegExp物件。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var reg= new RegExp("\\b\\w","gi"); 
var newReg=RegExp(reg);
var newSecondReg=new RegExp(/\b\w/gi);
console.log(reg===newReg);
console.log(reg===newSecondReg);

以上程式碼的輸出結果可以證明這一點。

相關文章