zoukankan      html  css  js  c++  java
  • js拾遗: replace 替换参数

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

    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

    这样应该很清楚这些替换参数的作用了吧,,千万别再次被坑到了。

  • 相关阅读:
    HDU 3033 I love sneakers!
    HDU 1712 ACboy needs your help
    FZU 1608 Huge Mission
    HDU 3394 Railway
    【MySQL】20个经典面试题,全部答对月薪10k+
    mysql故障解决笔记
    mysql 索引类型
    linux禁用锁定和解除解锁用户账号的方法
    Linux服务器制定mysql数据库备份的计划任务
    网站服务器安全防范小知识
  • 原文地址:https://www.cnblogs.com/52cik/p/js-fix-replace.html
Copyright © 2011-2022 走看看