用法
replace 最难用法
1 2 3 4 5 6 7 8
| var a = "thsif fsejf dsfse jsfs fesjf sef sjfes fesj fse"; a.replace(/(es)j/g, function(match, $1, $2, $3){console.log(arguments )});
(4) ["esj", "es", 24, "thsif fsejf dsfse jsfs fesjf sef sjfes fesj fse", callee: function, Symbol(Symbol.iterator): function]0: "esj"1: "es"2: 243: "thsif fsejf dsfse jsfs fesjf sef sjfes fesj fse"callee: function (match, $1, $2, $3)length: 4Symbol(Symbol.iterator): function values()__proto__: Object (4) ["esj", "es", 40, "thsif fsejf dsfse jsfs fesjf sef sjfes fesj fse", callee: function, Symbol(Symbol.iterator): function] "thsif fsejf dsfse jsfs fundefinedf sef sjfes fundefined fse"
|
由以上可知,当 replace 第二个参数为函数的时候,接受一系列参数值,第一个参数值是匹配到的值(正则表达式匹配到的全部的值),从第二参数以后分别是 $1, $2 …. 分别代表正则表达式中的第一个分组,第二个分组。。。分组完之后,便是匹配到的值的位置索引,下一个参数是调用的回调函数,再下一个是 Symbol,具体啥用还不清楚。js 中 replace 的正则形式复杂,但功能强大。
普通用法
1 2 3 4 5 6
| var a = "thsif fsejf dsfse jsfs fesjf sef sjfes fesj fse"; a.replace(/(es)j/g, "$1"); a.replace(/(es)j/g, "$&");
"thsif fsejf dsfse jsfs fesf sef sjfes fes fse" 相当于去掉所有esj中的j
|