正則匹配:match與exec


1.match是字符串的方法,exec是正則對象實例的方法

var s='我的世界1234567abcdefg';
var result=s.match(/\d/);
console.log(result);//返回一個數組,數組長度為1,包含匹配到的項,另外還有index和input屬性

var s='我的世界1234567abcdefg';
var result=/\d/.exec(s);
console.log(result);//結果同string.match(reg)

2.正則表達式中沒有子表達式,且非全局匹配(沒有修飾符g),match和exec結果一樣都是返回數組如上方第一點

3.正則表達式中含有子表達式,且非全局匹配,match和exec結果一致

var s='abc,bbc,cbc,dbc';
var result=/(\w)bc/.exec(s);
console.log(result);
var result2=s.match(/(\w)bc/); console.log(result2); //['abc','bc'],返回長度為2的數組,第一項時匹配項,第二項是子表達式捕獲項,包含屬性,index和input,index是匹配項開始的下標

4.正則表達式中沒有子表達式,全局匹配。match返回所有匹配項組成的數組,exec返回一個匹配項的數組

var s='abc,bbc,cbc,dbc';
var result=/\wbc/g.exec(s);
console.log(result);
//['abc'],index為0,input為'abc,bbc,cbc,dbc'

var result2=s.match(/\wbc/g);
console.log(result2);
//['abc','bbc','cbc','dbc']

5.正則表達式中有子表達式,全局匹配。match返回所有匹配項組成的數組,忽略子表達式的捕獲項,exec忽略全局匹配。

var s='abc,bbc,cbc,dbc';
var result=/(\w)bc/g.exec(s);
console.log(result);
//['abc','a'],index為0,input為'abc,bbc,cbc,dbc'

var result2=s.match(/(\w)bc/g);
console.log(result2);
//['abc','bbc','cbc','dbc']

6.exec適合用於循環匹配,雖然全局匹配和非全局的返回值一樣,但使用exec循環時,必須要加修飾符g

var s='abc,bbc,cbc,dbc';
var reg=/(\w)bc/g;
//循環匹配時,要先將正則表達式定義好,不然每次都是一個新的正則對象,影響lastIndex的變化
//一定要加修飾符g,lastIndex是匹配項后面的下標,是下一次匹配的開始下標
//當 exec() 再也找不到匹配的文本時,它將返回 null,並把 lastIndex 屬性重置為 0
var resultArr=[];
while(result=reg.exec(s)){ 
console.log("lastIndex: "+reg.lastIndex);
//lastIndex: 3
//lastIndex: 7
//lastIndex: 11
//lastIndex: 15
resultArr.push(result);
}
console.log(JSON.stringify(resultArr));//[["abc","a"],["bbc","b"],["cbc","c"],["dbc","d"]]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM