正則的exec屬性去捕獲一個字符串時一次只能拿一個符合的,所以一樣的步驟須要作屢次,每次使用exec 或者test ,都會更新對應的lastIndex屬性(lastIndex屬性是自身內置的屬性)數組
一直用exec捕獲 啥時候結果是null 啥時候就中止捕獲,先用一個變量接收 exec的結果 ,當這個結果存在 就是把這結果放到一個數組中,當結果不存在時 返回 這個數組;bash
RegExp.prototype.execAll = function(str){
var that = this;//函數中的this不能直接參與運算,用一個變量代替
if(!that.global){
//that = eval(that + 'g');
var temp = /^\/(.+)\/$/.exec(that+'')[1];
that = new RegExp(temp,'g');
}
var res = that.exec(str);
var ary = [];
while(res){
ary.push(res);
res = that.exec(str);
}
return ary;
}
複製代碼