Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
262 views
in Technique[技术] by (71.8m points)

通过函数来取代传入参数

这是一个例子:

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
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 '我想要替换成什么都可以';
    }   
)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

63 comments

56.7k users

...