如果你想通过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. Oracle数据库操作

    本例使用oracle数据库,使用PL/SQL可视化工具: --查询员工表数据 (emp为pl/sql自带的表,也可自己新建)select * from emp; --创建表空间create table ...

  2. 利用fsockopen可实现异步成功访问

    $fp = fsockopen("www.jb51.net", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ( ...

  3. #IrrlichtEngine# Example1 HelloWorld

    配置IDE环境来使用irrlicht引擎: (VS2012下)菜单栏项目 -> 项目属性窗口下 C/C++ -> 常规 -> 附加包含目录中添加irrlicnt引擎文件目录下incl ...

  4. ASP.NET Identity V2

    Microsoft.AspNet.Identity是微软在MVC 5.0中新引入的一种membership框架,和之前ASP.NET传统的membership以及WebPage所带来的SimpleMe ...

  5. AngularJS SPA Template For Visual Studio

    单页面应用程序(SPA)[使用JavaScript.CSS和HTML强大的功能,可以构建一个单页面应用程序(SPAs)],它提供了丰富的用户体验页面.导航技术和AJAX提供必要的功能,而不用重新加载页 ...

  6. Microsoft .NET Framework 4.0.3版下载

    适用于 Microsoft .NET Framework 4 的更新 4.0.3,其中包含一系列新增功能,用于满足高端客户的功能需求和重要 .NET Framework 方案的需求. http://w ...

  7. ABP理论学习之数据过滤器

    返回总目录 本篇目录 介绍 预定义过滤器 关闭过滤器 开启过滤器 设置过滤器参数 定义自定义过滤器 其他ORM 介绍 软删除模式通常用于不会真正从数据库删除一个实体而是仅仅将它标记为"已删除 ...

  8. 人生苦短,我用python——当我在玩python的时候我玩些什么

    文章背景 家里的第一台电脑是在2006年夏天买的,10年上大学之后基本上就没人用,过没两年就当二手卖给一个熟人. 弟弟小我10岁,今年刚上初一.他在我毕业前半年就整天用妈妈的手机发短信给我,问我什么时 ...

  9. Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

    <Windows Azure Platform 系列文章目录> Update 2016-09-28 想要在Azure云端,使用AzCopy工具,从Azure China 上海数据中心存储账 ...

  10. 冒烟测试 smoking test

    冒烟测试的概念: 版权声明:本文为博主原创文章,未经博主允许不得转载. 冒烟测试既是对软件基本的功能进行测试,测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本的功能正常,保证软件系 ...