replace()

38 阅读1分钟

replace( [ RegExp | String ], [ String | Function ] ) : 

1、返回值:

返回新的字符串,不会改变源字符串本身;

2、参数:

第一个参数 : 正则 或者 字符串;

第二个参数: 字符串  或者 方法

3、示例:

1replace( 字符串, 字符串 ) : 只能替换一个,不能全局替换,因为不是写正则

    let str = '陈碧华,陈'
    str = str.replace('陈','chen')
    console.log(str) // 'chen碧华,陈'
2replace( 正则, 字符串 ) : 可以使用 /g 进行全局匹配,能替换全部

    let str = '陈碧华,陈'
    str = str.replace(/陈/g,'chen')
    console.log(str) //'chen碧华,chen'
3replace( 正则不分组, function ) :  每匹配到一次,function就会执行一次

        function 中默认有3个参数: 

                    0 匹配到的子字符串;1 匹配到的字符串的索引; 2 源字符串本身
                    
    let str = '陈碧华,陈'
    str = str.replace(/陈/g,function() {
        console.log(arguments)
        return 'chen'
    })                    

image.png

解析: 因为用全局 /g ,所以会匹配到两个,所以function会执行2次, 注意如果是箭头函数的话是没有arguments参数的,要自己放形参来访问

4replace( 正则分组, function) : 每匹配到一次函数会执行一次  

    参数: 0 匹配到的字符串, 1 匹配到的第一个分组项 (....  剩下的一个个分组), 接下来是匹配到字符串的索引, 接下来是源字符串本身

image.png

解析: 0:匹配的子字符串, 1:第一个分组, 2:子字符串索引, 3:源字符串

image.png

解析: 0:匹配的子字符串, 1:第一个分组, 2:第二个分组,3:索引, 4:源字符串