如果你想通过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()方法)。