从页面获取Javascript正则表达式

时间:2015-06-30 14:14:43

标签: javascript regex

我试图从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,我需要能够从页面中获取正则表达式以便稍后进行评估,但是现在除非我静态地定义它们,否则我不能这样做。

3 个答案:

答案 0 :(得分:1)

我不知道为什么会发生这种情况,但你可以简单地解决这个问题:

var j = document.getElementById('test').innerHTML.replace(/\\\\/g,"\\");

见示例: https://jsfiddle.net/wjnm15gL/1/

答案 1 :(得分:1)

你无法修复&#34;这个。按照设计,JS中的反斜杠用于转义特殊字符,例如换行符(\ n)。如果要使用文字反斜杠,则必须使用双反斜杠。

如果要使用两个反斜杠,请使用四个:

console.log('\\\\'); //returns \\

答案 2 :(得分:0)

JavaScript字符串会自动转义\个字符后的特殊字符。在您的控制台中尝试此操作以查看:

console.log('It\'s a wonderful day');
//It's a wonderful day

这就是为什么您的ji变量会以不同的方式记录到控制台。

相关问题