使用javascript正则表达式替换字符实体

时间:2016-10-03 20:39:16

标签: javascript regex replace entity

我有一套没有正确显示的笔记。查看源代码,换行符应该是&#xd;&#xa;。我想用<br>替换这些实例。我使用了一个书签,它可用于明文字符串,例如ABC,但它不适用于给定的字符串。

例如,这个工作正常:

javascript:(function(){var re = new RegExp("ABC", "g"); document.getElementById('my_span').innerHTML=document.getElementById('my_span').innerHTML.replace(re, "<br>" );})();

虽然这不是:

javascript:(function(){var re = new RegExp("&#xd;&#xa;", "g"); document.getElementById('my_span').innerHTML=document.getElementById('my_span').innerHTML.replace(re, "<br>" );})();

奇怪的是,后者将采用&#xd;&#xa;的第一个实例,只需删除它而不替换它。

我正在使用的页面不会加载jQuery,而且我在公司环境中工作,因此我不愿意在外部打电话。

innerHTML未收到&#xd;&#xa;的情况有关吗?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

它与您说的完全一样:innerHTML没有按照您的预期接收这些字符。将字符实体插入HTML会导致它们被解释,innerHTML将返回解释的版本,而不是原始版本。如果你有:

<p id="test">Cookies &amp; Cream</p>

你使用:

document.getElementById('test').innerHTML;

你没有得到:

Cookies &amp; Cream

你得到:

Cookies & Cream

同样,当您在书签中使用innerHTML时,您仍未获得&#xd;&#xa;:您正在获得回车和换行。

要将这些字符与正则表达式匹配,请使用\r\n\r将匹配回车符(&#xd;)。虽然\n会与换行符匹配(&xa;)。

var regex = new RegExp('\r\n', 'g');