- 最简单的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
时间: 2024-10-18 03:03:29