您的位置:首页 > Web前端 > JavaScript

javascript string对象方法replace

2016-05-04 22:28 471 查看
最简单的replace用法是:

var str = 'aaaaa9876b0000';
str.replace(/a/g,'A');


有时候我们希望只是在匹配的位置添加特定的字符:

var str = 'aaaaa9876b0000';
str.replace(/([0-9])/g,'[$1]');


以上结果为:

aaaaa[9][8][7][6]b[0][0][0][0]


如果我们想要对匹配的位置进行数学计算,那么我们可以将第二个参数改为函数,其返回值就是在对应位置题换的字符:

'abc123ba0c'.replace(/([0-9])/g,function(m){return 2*parseInt(m)})


以上结果为:

abc246ba0c


那么,这个函数的参数是什么呢?

第一个参数表示匹配的完整字符串,相当于 /([0-9])/g的exec方法的全局执行完之后的结果,如下:

>var reg = /([0-9])/g
>reg.exec('abc123ba0c')
["1", "1"]
>reg.exec('abc123ba0c')
["2", "2"]
>reg.exec('abc123ba0c')
["3", "3"]
>reg.exec('abc123ba0c')
["0", "0"]


正则表达式有多少个(),m后面就可以有多少个参数,这些参数就代表以上匹配结果中对应位置的内容。

这些()内的参数后面,还有一个参数,表示所有全局匹配串m在原始字符串中的起点:

>'abc123ba0c'.replace(/([a-z]+)([0-9]+)/g,function(m,p1,p2,p3,p4){console.log(m+' '+ p1 + ' '+p2+' ' + p3)})

abc123 abc 123 0
ba0 ba 0 6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: