replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
在阅读underscore源码时,看到了replace使用回调函数的形式
特在此总结一下replace的使用方法

普通文本替换

  • 普通替换

    1
    'test'.replace(/te/,'et');  => etst
  • 忽略大小写

    1
    'Test'.replace(/te/i,'et'); => etst
  • 全局

    1
    'TestTEST'.replace(/te/ig,'et'); => etstetST

使用匹配到的字符串作为参数

1
'TestTEST'.replace(/(te).*(TE)/i,'$2aa $1bb'); => TEaa TebbST

使用回调函数

ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身

  • 普通替换

    1
    2
    3
    4
    5
    'TestTEST'.replace(/te/ig, function(str){
    return str + '123';
    });
    //输出:Te123stTE123ST
    //参数str为匹配到的字符串
  • 带参数替换

    'testTEST'.replace(/(te)|(TES)/g, function(str, te, TES){
        if(te)
            return te + 456
        if(TES)
            return TES + 789;
    });
    //输出:te456stTES789T
    //参数te对应表达试中(te)
    //参数TES对应表达试中(TES)
    //参数的顺序与表达式中()的顺序一致
    //'()'中为一个匹配,每个()内都是单独匹配,可设置多个
    

本文地址: http://gehaiqing.com/2016/08/14/js-replace/