• 关于replace()方法中第二个参数的转义问题


    如果你想通过Javascript代码在网页中呈现 字符,则在JS代码中你必须输入两个反斜杠 \,否则会报错。比如:

    var a = "";
    alert(a); //chrome和Firefox都会报错,IE不报错但也不会输出任何东西

    而且反斜杠 本身在JavaScript 中用来向文本字符串添加特殊字符所以说当你调用replace()方法,并且想将匹配项替换为特殊字符时就要使用反斜杠。

    假设有一个字符串,其中有字母又有数字,如果你想将数字替换成 ,就要用转义符(即反斜杠 )对反斜杠 进行转义(转义符要写在被转义的特殊字符的前面)。比如:

    var a = "1fge4hrj";
    var b = "\";//第一个反斜杠起转义作用
    alert(a.replace(/d/g,b)); //print:fgehrj
    
    var c = "\\";
    alert(a.replace(/d/g,c)); //print:\fge\hrj

    再来看一个例子:

    <body>
        <textarea id="code" name="code">\</textarea>
            <script type="text/javascript">
            function qwe() {
               var d = document.getElementById("code").value; 
                       var a = "1fge4hrj";
               alert(a.replace(/d/g,d)); //print:\fge\hrj
               alert(d=="\\");//true
               alert(d=="\");//false
            }
            qwe();
        </script>
    </body>

    在这个例子中textarea元素中有一个字符串 “\”,通过DOM方法获取这个字符串并保存在变量 d 中,将变量 d 作为replace()方法的第二个参数,可以看到调用replace()方法的字符串中的数字被替换成了“\”,这是为什么呢?

    因为变量 d 保存的是HTML代码中的字符串“\”,当它被JS代码调用的时候,JS解释器在后台自动将它进行了转义,字符串“\”在JS代码中应该被写为“\\”。我们把变量 d 分别与字符串“\”和字符串“\\”进行比较可以发现这个后台转义过程。与“\”比较返回false,与“\\”比较返回true。

    参考:1、http://www.w3school.com.cn/js/js_special_characters.asp(Javascript特殊字符)。

             2、http://www.w3school.com.cn/jsref/jsref_replace.asp(Javascript replace()方法)。

  • 相关阅读:
    matplotlib formatters
    matplotlib locators
    mysql> 12 simple but staple commands
    mysql--> find your databases' local position
    ubuntu16.04安装caffe常见问题及其解决方案
    gitlab使用说明
    vim配置摘要
    shell 提示符个性化设置
    python拼接参数不确定的SQL时防注入问题--条件语句最后拼入
    python_opencv ——图片预处里(二)
  • 原文地址:https://www.cnblogs.com/fogwind/p/5793101.html
Copyright © 2020-2023  润新知