regexp物件的exec方法和string物件的match方法用法十分相似,分兩篇部落格講講其各自的用法和它們之間的異同。
【定義】
exec() 方法用於檢索字串中的正規表示式的匹配。
【語法】
regexpobject.exec(string)【返回值】返回乙個陣列,其中存放匹配的結果,第一項為與整個模式匹配的字串,其他項是與模式中的捕獲組匹配的字串,且陣列還包含兩個屬性:index和input。其中index表示匹配項在字串中的位置,input表示應用正規表示式的字串。如果未找到匹配,則返回值為 null。
regexp物件是否為全域性正規表示式(是否有全域性標誌g)產生的結果有所不同,因此以下我們分兩種情況講解:
1)regexp物件不是全域性表示式;
2)regexp物件是全域性表示式。
var str="web2.0 .net2.0";結果如下:var pattern=/(\w+)(\d)\.(\d)/;//沒有全域性標誌g
console.log(pattern.exec(str));
第一項:web2.0,與整個模式匹配的結果,也就是與/(\w+)(\d)\.(\d)/匹配的結果;
第二項:web,與第乙個匹配組匹配的結果,也就是與(\w+)
匹配的結果;
第三項:2,與第二個匹配組匹配的結果,也就是與(\d)
匹配的結果;
第四項:0,與第三個匹配組匹配的結果,也就是與(\d)(第二個(\d))匹配的結果;
屬性一:index:0,匹配項在字串中的位置,也就是陣列第一項的匹配字串的位置。
屬性二:input:"web2.0 .net2.0",也就是輸入引數str。
以上結果就是每次執行exec方法所得的結果的格式,如果有更多捕獲組,結果中會按順序列出所有的結果。
這個時候,如果我們再執行一次exec方法:
var str="web2.0 .net2.0";兩次得到的結果會完全相同(設定了全部屬性就會不一樣),也就是當regexp物件沒有全域性標誌時,exec方法每次都只是從頭開始匹配,每次都是返回第乙個匹配項,net2.0儘管也滿足regexp物件,但不會被檢索到。var pattern=/(\w+)(\d)\.(\d)/;//沒有全域性標誌g
console.log(pattern.exec(str));
console.log(pattern.exec(str));
var str="web2.0 .net2.0";兩次的結果如下:var pattern=/(\w+)(\d)\.(\d)/g;//有全域性標誌g
console.log(pattern.exec(str));
console.log(pattern.exec(str));
可以看出兩次結果不同,第二次的結果是在第一次結果的基礎上繼續往後查詢,而不是從頭開始。因此,是否設定全域性標誌g,不會影響第一次的執行結果,但是會決定第二次及以後的結果。我們可以通過regexp的lastindex屬性(表示開始搜尋下乙個匹配項的字元位置)驗證一下:
var str="web2.0 .net2.0";可以看到第一次執行exec後,regexp的lastindex為6;第二次執行exec後,regexp的lastindex為14,說明每次搜尋的起點是接在上次的匹配結果之後的。var pattern=/(\w+)(\d)\.(\d)/g;//有全域性標誌g
var match1=pattern.exec(str);
console.log(pattern.lastindex);//6
var match2=pattern.exec(str);
console.log(pattern.lastindex);//14
我們可以對比一下不設定全域性標誌的結果:
var str="web2.0 .net2.0";兩次的lastindex都是0,表示下一次仍然從頭開始搜尋。var pattern=/(\w+)(\d)\.(\d)/;//沒有全域性標誌g
var match1=pattern.exec(str);
console.log(pattern.lastindex);//0
var match2=pattern.exec(str);
console.log(pattern.lastindex);//0
1)exec是regexp物件的方法,接受引數為字串;
2)exec執行一次只返回包含乙個匹配項資訊的陣列,陣列格式為[與整個模式匹配的字串,與第乙個捕獲組匹配的字串,與第二個捕獲組匹配的字串,……],陣列有兩個屬性,分別為匹配得到的字串的位置index和輸入引數字串input;
3)不設定全域性標誌g時,exec方法每次都從頭開始檢索,並返回第乙個匹配項;設定全域性標誌g時,exec方法從上次檢索的重點開始檢索,也就是lastindex值的位置。
RegExp物件方法
test 方法 該方法用於檢測乙個字串是否匹配某個模式 基本語法 regexpobject.test str param 引數 str是需要檢測的字串 return 返回值 如果字串str中含有與regexpobject匹配的文字的話,返回true,否則返回false var str longen ...
RegExp物件的三個方法
regexp物件在vbscript中提供正規表示式支援功能,該物件有3個屬性和3個方法。1 execute方法 該方法用於對指定正規表示式進行匹配檢測,其值返回乙個matches集合,其中包含了所有檢測到匹配的match物件。如果沒有檢測到任何匹配則返回一 個空的matches集合。語法格式 reg...
RegExp中的方法
在內建物件regexp中,有兩個方法可以使用正規表示式,分別是test 和exec text 用於判斷正規表示式與指定的字串是否匹配,匹配成功返回true,匹配失敗返回false,此方法經常被應用在條件語句中,在每個regexp例項中,都包含乙個屬性 lastindex,定義檢索的起始位置。當正規表...