Javascript 如何正确替换a<;预处理>;元素

Javascript 如何正确替换a<;预处理>;元素,javascript,jquery,xhtml,Javascript,Jquery,Xhtml,如何使用jQuery(甚至是纯JS)将给定字符串解析为HTML,然后替换所有 <p>HTML block</p> <pre> <body> <h1>Hello World</h1> <p>Hi</p> </body> </pre> 请注意,元素中可以包含任何内容,包括其他嵌套元素或脚本 我尝试使用$.parseHTML(),但出于某种原因,它会去掉某些嵌套元

如何使用jQuery(甚至是纯JS)将给定字符串解析为HTML,然后替换所有

<p>HTML block</p>
<pre>
<body>
    <h1>Hello World</h1>
    <p>Hi</p>
</body>
</pre>
请注意,
元素中可以包含任何内容,包括其他嵌套元素或脚本


我尝试使用
$.parseHTML()
,但出于某种原因,它会去掉某些嵌套元素(例如,
中的

我知道RegEx不是最好的,但稍后我会添加一个DOM解决方案假设
字符串
是您的字符串


这将生成一个新变量,
newstring
,它是您的结果字符串
document.getElementsByTagName('pre')[0]。innerHTML=document.getElementsByTagName('pre')[0]。innerHTML.replace(/\r\n/,'
')
@vihan1086它不是HTML文档,而是字符串。如何将其转换为HTML文档?我明白了,我添加了一个答案
<p>HTML block</p>
<pre><br/><body><br/><h1>Hello World</h1><br/><p>Hi</p></br></body><br/></pre>
string.replace(/(?:\<pre[\S\s]*?\>)([\S\s]*?)(?:\<\/pre\>)/, string.match(/(?:\<pre[\S\s]*?\>)([\S\s]*?)(?:\<\/pre\>)/)[1].replace(/\n/g, '<br/>'));
var d = (new DOMParser).parseFromString(string, 'text/html');
d.getElementsByTagName('pre')[0].innerHTML = d.getElementsByTagName('pre')[0].innerHTML.replace(/\n/g, '<br/>');
var d = (new DOMParser).parseFromString(string, 'text/html'); d.getElementsByTagName('pre')[0].innerHTML.replace(/\n/g, '<br/>');
var newstring = d.body.innerHTML;