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

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

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

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

var a = "1fge4hrj";
var b = "\\";//第一个反斜杠起转义作用
alert(a.replace(/\d/g,b)); //print:\fge\hrj 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()方法)。

关于replace()方法中第二个参数的转义问题的更多相关文章

  1. JavaScript中replace()方法的第二个参数解析

    语法 string.replace(searchvalue,newvalue) 参数值 searchvalue 必须.规定子字符串或要替换的模式的 RegExp 对象.请注意,如果该值是一个字符串,则 ...

  2. jQuery()方法的第二个参数

    关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 con ...

  3. jQuery()方法的第二个参数详解

    关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 con ...

  4. getAttribute()方法的第二个参数

    对于一个img元素,我们想获取它的src属性时可以有两种方式: 1.xxx.getAttribute("src") 2.直接通过xxx.src获取属性值 在src的属性值为相对路径 ...

  5. [改善Java代码]注意方法中传递的参数要求(replaceAll和replace的区别)

    有这样一个简单的需求:写一个方法,实现从原始字符串中删除与之匹配的所有子字符串,比如"蓝蓝的天,白云飘"中,删除"白云飘",输出"蓝蓝的天," ...

  6. element-ui(或者说Vue的子组件)绑定的方法中传入自定义参数

    比如el-upload中的 :on-success= fn,其实是给组件el-upload传递一个prop,这样写的话fn只能接受upload组件规定的参数,如果想自己传递父组件中的参数比如b,要写成 ...

  7. Java连载67-深入一维数组、main方法中的args参数详解

    一.复习了一维数组,还复习了强制类型转换的注意点. package com.bjpowernode.java_learning; public class D67_1_GoDeepIntoArrays ...

  8. 关于Array的map方法中回调函数参数的问题

    开门见山,我们先来看两个例子. var arr=['1','4','9','16']; var r=arr.map(Math.sqrt); 猜猜r的结果会是多少? 没错就是 [1,2,3,4] 我们再 ...

  9. 4、处理方法中获取请求参数、请求头、Cookie及原生的servlet API等

    1.请求参数和请求头 使用@RequestParam绑定请求参数,在处理方法的入参处使用该注解可以把请求参数传递给请求方法 —— value :参数名 —— required : 是否必须,默认为tr ...

随机推荐

  1. MVC Castle依赖注入实现代码

    1.MVc 实现依赖注入 public class WindsorControllerFactory : DefaultControllerFactory { private readonly IKe ...

  2. C#线程入门---转载

    C#中的线程(一)入门 文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari,  翻译 Swanky Wu 中 ...

  3. SQL Server2016 原生支持JSON

    SQL Server2016 原生支持JSON SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML 索引以及各种管理 XML 或输出 XML 格式的函数. ...

  4. .NET中那些所谓的新语法之四:标准查询运算符与LINQ

    开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...

  5. 现在创业做App,先做 Android 还是 iOS?

    随着互联网+的高速发展,现在创业大部分都是在布局移动端,初期往往摆在面前最大的难题是,如何分配有限的成本,在最快的速度内占领市场?这个大难题会影响创始人在团队和产品建设方方面面的决定.缩小至移动App ...

  6. 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件

    目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET.BMap.NET.WindowsForm以及BMap.NET.WinformDemo. BMap.NET 对百度地 ...

  7. .NET垃圾回收(GC)原理

    作为.NET进阶内容的一部分,垃圾回收器(简称GC)是必须了解的内容.本着“通俗易懂”的原则,本文将解释CLR中垃圾回收器的工作原理. 基础知识 托管堆(Managed Heap) 先来看MSDN的解 ...

  8. 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库

    上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...

  9. SQL Server 2000向SQL Server 2008 R2推送数据

    [文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...

  10. JS原生第五篇 (帅哥)

    1.1 节点 1. 节点        网页是有很多的节点组成的  . 元素节点   指的是 :  标签     li  span 文本节点      属性节点 父子兄弟    父    parent ...