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

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

  • 相关阅读:
    JAVA学习25天
    Java学习第24天
    Java学习第23天
    Java学习22天
    第3周
    Java21
    day23作业
    day23
    Typecho使用技巧
    搭建Typecho博客
  • 原文地址:https://www.cnblogs.com/52cik/p/js-fix-replace.html
Copyright © 2011-2022 走看看