通过函数来取代传入参数

这是一个例子:

'<div>12344我是</div><div>第三dsfsdff</div>'.replace(
    /[\u4e00-\u9fa5]+/g, 
    function($match, $pos){
        console.log($match, $pos);
        return $match;
    }
)

然后有大佬能详细说说扩展应用吗?
感觉有很多地方能变用,但是又有些迷茫的样子!

阅读 1.9k
2 个回答
var orgStr= '<div>12344我是!</div><div>第三!dsfsdff</div>';
orgStr.replace(
    /([\u4e00-\u9fa5]+)!/g, 
    function(){
        var _arguments_ = Array.prototype.slice.call(arguments);
        console.log('函数参数:',_arguments_);
        console.log('匹配到的子字符串:',_arguments_[0]);
        console.log('匹配的位置:',_arguments_[_arguments_.length-2]);
        var offsetIndex = _arguments_.length-2;
        if( Object.prototype.toString.apply(_arguments_[_arguments_.length-1])==='[object String]'){
            console.log('源字符串:',_arguments_[_arguments_.length-1]);
            console.log('匹配到的命名分组对象:null');
        }else{
            offsetIndex = _arguments_.length-3;
            console.log('源字符串:',_arguments_[_arguments_.length-2]);
            console.log('匹配到的命名分组对象:',_arguments_[_arguments_.length-1]);
        }
        if(offsetIndex!==1){
            //有分组group信息
            for(var i=1;i<offsetIndex;i++){
                console.log('匹配到的分组字符串:',_arguments_[i]);
            }
        }
        //可以对匹配到的结果进行二次计算
        return '我想要替换成什么都可以';
    }   
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题