先來看一個簡單的例子吧。
var str = "123X321".replace("X", "$'");
js獲取table指定行列?替換后的 str 是什么呢?
是 "123$'321" 。。。嗎??
如果你的瀏覽器是 IE6-8 的話,確實是這個結果,可是那只是變態IE的結果。
標準瀏覽器下會是什么呢?
var str = "123X321".replace("X", "$'");
console.log(str);
點擊右上角 運行 看看結果吧。
竟然是 "123321321" 為什么會是這個結果呢?
還是看權威的文檔吧,《Specifying a string as a parameter》。
在這里,我們可以看到 $$, $&, $`, $' 和 $n/$nn 的格式。
相信很多學過 js 正則的應該都用印象。
其實我一直以為只有在正則里才能用這些替換參數,直到前些天被坑才真正掌握這個知識點。
js替換回車、其實 $$,?$&,?$`,?$'?在普通字符串替換時也可以使用
$$ 表示 $ 字符
$& 表示匹配到的字符
$` 表示匹配到的字符之前的那部分
$' 表示匹配到的字符之后的那部分
但是 $n 或 $nn 只有在正則模式捕獲組才能使用。
例如
var str = "123X321";
console.log( "$$", str.replace("X", "$$") ); // X 換成了 $
console.log( "$&", str.replace("X", "$&") ); // X 換成了 X
console.log( "$`", str.replace("X", "$`") ); // X 換成了 123
console.log( "$'", str.replace("X", "$'") ); // X 換成了 321
console.log( "$'", str.replace(/X/, "$'") ); // X 換成了 321// $n 這種格式只有正則能用
console.log( "$1", str.replace(/(X)(\d)/, "$1") ); // X3 換成了 X
console.log( "$2$1", str.replace(/(X)(\d)/, "$2$1") ); // X3 換成了 3X
js replace替換最后一個。這樣應該很清楚這些替換參數的作用了吧,,千萬別再次被坑到了。
?