封装一个函数能够一次性把符合正则的全部内容都拿到

前言

正则的exec属性去捕获一个字符串时一次只能拿一个符合的,所以一样的步骤须要作屡次,每次使用exec 或者test ,都会更新对应的lastIndex属性(lastIndex属性是自身内置的属性)数组

execAll的实现思想

一直用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;
}
复制代码
相关文章
相关标签/搜索