js正则怎么匹配<pre><code>xxx</code</pre>中的内容

"<p>第一个</p>
<pre><code>console.log(1);</code></pre>
<p>第二个</p>
<pre><code>console.log(2);</code></pre>"

想把pre>code里面的内容提取出来并替换掉该怎么做

这些全是字符串不是dom

阅读 3.9k
3 个回答

提供下非正则的方式

如果是jq的话

var html="<pre><code>console.log(1);</code></pre>";
 console.log(  $(html).text()  );

如果非得用js

var textEle=document.createElement("div");
textEle.innerHTML="<span>你要提取的文字</span>";
console.log(textEle.innerText);
var html="<pre><code>console.log(1);</code></pre><pre><code>console.log(2);</code></pre>";
 html.replace(/<pre><code>(.*?)<\/code><\/pre>/g, "$1");

正则匹配的话就这样

let str = `
  <p>第一个</p>
  <pre><code>console.log(1);</code></pre>
  <p>第二个</p>
  <pre><code>console.log(2);</code></pre>`;

str.match(/(?<=<pre><code>)[\s\S]*?(?=<\/code><\/pre>)/gi);  // 获得

str.replace(/(?<=<pre><code>)[\s\S]*?(?=<\/code><\/pre>)/gi, 'asdf');  // 替换

其中,/(?<=somePattern)/是“零宽度正回顾后发断言”贼基尔长/(?=somePattern)/是“零宽度正预测先行断言”贼基尔长*2/somePattern/g是全局匹配,/somePattern/i是大小写不敏感,/somePattern*?/是懒惰匹配。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题