码迷,mamicode.com
首页 > Web开发 > 详细

js拾遗: replace 替换参数

时间:2014-07-11 09:19:43      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   使用   

先来看一个简单的例子吧。

var str = "123X321".replace("X", "$‘");

替换后的 str 是什么呢?
"123$‘321" 。。。吗??
如果你的浏览器是 IE6-8 的话,确实是这个结果,可是那只是变态IE的结果。
标准浏览器下会是什么呢?

var str = "123X321".replace("X", "$‘");
console.log(str);

点击右上角 运行 看看结果吧。
竟然是 "123321321" 为什么会是这个结果呢?
还是看权威的文档吧,《Specifying a string as a parameter》。
在这里,我们可以看到 $$, $&, $`, $‘$n/$nn 的格式。
相信很多学过 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 替换参数,布布扣,bubuko.com

js拾遗: replace 替换参数

标签:style   blog   http   java   color   使用   

原文地址:http://www.cnblogs.com/52cik/p/js-fix-replace.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!