欢迎光临
我们一直在努力

js中replace回调函数使用外部方法,正则回调

今天遇到一个需求,要使用replace调用回调函数,但是回调方法太长,要对它进行封装后进行调用,具体调用方法如下(示例):

function strHandle(a, b) {
    return b.replace(/baidu.com/g, "dvy.com.cn")
}

var tmp = '网址:https://www.baidu.com'

var str = tmp.replace(/https\:\/\/([a-z\.]*)/g, function (map, $1) {
    console.log(map)    // https://www.baidu.com
    console.log($1)     // www.baidu.com
    return strHandle(map, $1)
});


console.log(str)    // 网址:www.dvy.com.cn

经过测试上述代码,replace调用外部方法作为回调函数的另一写法如下

function strHandle(a, b) {
    console.log(a)
    console.log(b)
    return b.replace(/baidu.com/g, "dvy.com.cn")
}

var tmp = '网址:https://www.baidu.com'

var str = tmp.replace(/https\:\/\/([a-z\.]*)/g, strHandle);
// 说明:这里strHanle不需要写参数,他直接会传入map,$1,$2,$3....这里的map是匹配到的整个字段,$1,$2,$3这里是()匹配到的字段段

console.log(str)    // 网址:www.dvy.com.cn

另附注一下错误的调用写法

// 错误写法:无法通过直接调用该方法的方式进行回调,要使用该法不能写参数!
str = tmp.replace(/https\:\/\/([a-z\.]*)/g, strHandle (map, $1)) 
// 错误写法:通过匿名函数里使用该方法,该匿名函数要加返回
str = tmp.replace(/https\:\/\/([a-z\.]*)/g, function (map, $1) {
 
    strHandle(map, $1)
  // 此处应添加retrun
});
赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » js中replace回调函数使用外部方法,正则回调

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址