我试图从HTML元素中获取正则表达式,以便稍后可以将其用于评估,但出于某种原因,当我从DOM中获取RE时,它与我静态时的不同之处在我的Javascript中定义它。这是我的测试代码:
<p id="test">\\b31\\b</p>
<script>
var j = document.getElementById('test').innerHTML;
console.log(j);
var i = "\\b31\\b"
console.log(i);
</script>
对于j,结果是\\ b31 \\ b,对于i,结果是\ b31 \ b。为什么不是\ b31 \ b?更重要的是,我该如何解决这个问题?因为我的正则表达式评估后来不能使用j,我需要能够从页面中获取正则表达式以便稍后进行评估,但是现在除非我静态地定义它们,否则我不能这样做。
答案 0 :(得分:1)
我不知道为什么会发生这种情况,但你可以简单地解决这个问题:
var j = document.getElementById('test').innerHTML.replace(/\\\\/g,"\\");
答案 1 :(得分:1)
你无法修复&#34;这个。按照设计,JS中的反斜杠用于转义特殊字符,例如换行符(\ n)。如果要使用文字反斜杠,则必须使用双反斜杠。
如果要使用两个反斜杠,请使用四个:
console.log('\\\\'); //returns \\
答案 2 :(得分:0)
JavaScript字符串会自动转义\
个字符后的特殊字符。在您的控制台中尝试此操作以查看:
console.log('It\'s a wonderful day');
//It's a wonderful day
这就是为什么您的j
和i
变量会以不同的方式记录到控制台。