为什么使用正则表达式替换javascript字符串会删除一个/&引用;从我的br标签
我正在使用带有超级简单正则表达式的javascript来替换“您的脚本还可以 如果您尝试以下方法:为什么使用正则表达式替换javascript字符串会删除一个/&引用;从我的br标签,javascript,regex,str-replace,Javascript,Regex,Str Replace,我正在使用带有超级简单正则表达式的javascript来替换“您的脚本还可以 如果您尝试以下方法: <pre><code id="cleanme"> <p><br />this is some code</p> </code></pre> var str='这是一些代码; str=str.replace(//g,“”); document.getElementById(“cleanme”).innerHTML=
<pre><code id="cleanme">
<p><br />this is some code</p>
</code></pre>
var str='
这是一些代码;
str=str.replace(//g,“”);
document.getElementById(“cleanme”).innerHTML=str;
它将正确打印
这可能是浏览器HTML规范化的结果。我认为这与某些浏览器返回innerHTML属性的方式有关。如果使用Google Chrome,请使用调试工具检查任何
标记,您会发现它们没有显示反斜杠。当Chrome返回innerHTML属性时也是如此,黑色斜杠是绊倒了 所以当你通过时:
这是一些代码
浏览器返回的innerHTML属性为:
这是一些代码
您的正则表达式不是问题所在。innerHTML不返回文本源代码,而是浏览器对其解释的结果 不同的浏览器会为innerHTML返回非常不同的结果,有时会省略一些引号和“可选”结束标记,将一些标记名和属性大写,并折叠额外的空白
HTML不会关闭不能包含结束标记的打开标记,因此它们也不包括在内。可能太晚了,无法帮助您,您已经接受了正确的答案,但还有一个潜在的大问题。 我在Linux上的Firefox 3.6.11和Windows上的Firefox 3.6.12上尝试了这一点,它们的行为都是一样的-- 我没有在你的小提琴上的结果窗格中看到
这是一些代码,而我看到的只是这是一些根本没有标记的代码
通过添加一个调试器;
语句作为JavaScript窗格中的第一行并对其进行跟踪,我发现str
得到的值是'\n'
,也就是说,只从innerHTML
返回了一个换行符,没有其他内容
考虑到这一点,但没有办法确认,我怀疑这是因为Firefox构建DOM树的方式与您预期的不同,因为您使用的HTML无效。内联元素不允许包含块元素;具体地说,
标记不允许包含
标记和
>同样,也不允许包含
标记——同样,在
标记中只能使用有限的内联元素)
我认为FF是在打开段落之前隐式关闭代码块,因此id=“cleanme”
的innerHTML只不过是换行符“字体如您所料,因为您已将浏览器置于怪癖模式。您如何看待它仅返回
?javascript警报?chrome inspect元素?通过浏览器在网页中实现,也通过JSFIDLE中的“结果”面板,以及javascript警报。啊,我明白你的意思了。除了innerHTML之外,还有其他属性可以获取准确的代码,而不是浏览器对代码的解释吗?如果jQuery让事情变得更简单的话,我不会反对它。反斜杠:Unicode U+005C='\'对于chrome,我认为这并没有什么意义……至少我知道。如果你不想让浏览器弄乱块,请在服务器端转义它。我现在也看到了。谢谢不知道我是否可以将代码包装在一个div中,使用id=“cleanme”,然后首先运行js,替换,然后让js添加到pre和code开始和结束标记中。不知道这是否有帮助。只是在Firefox4上检查了它,它的工作原理和我在Chrome上的一样。必须是FF的旧版本。尽管如此,我还是会尝试这样修复它:document.getElementById(“cleanme”).innerHTML=“”代码>我把“cleanme”变成了div
<pre><code id="cleanme">
<p><br />this is some code</p>
</code></pre>
<p><br>this is some code</p>
var str = '<p><br />this is some code</p>';
str=str.replace(/</g,"<");
str=str.replace(/>/g,">");
document.getElementById("cleanme").innerHTML = str;
<pre><code id="cleanme">
<p><br />this is some code</p>
</code></pre>
<pre><code id="cleanme">
<p><br>this is some code</p>
</code></pre>