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

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

  • 相关阅读:
    python 类函数
    scala 排序
    php基础-面向对象
    PHP基础-常用的数组相关处理函数
    PHP基础-PHP中预定义的超全局数组
    PHP基础-数组
    装饰器
    Python3.x 文件操作练习
    Python3.x 文件操作
    Python3 内置函数
  • 原文地址:https://www.cnblogs.com/52cik/p/js-fix-replace.html
Copyright © 2011-2022 走看看