鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ js正則怎么匹配<pre><code>xxx</c

js正則怎么匹配<pre><code>xxx</code</pre>中的內(nèi)容

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

想把pre>code里面的內(nèi)容提取出來并替換掉該怎么做

這些全是字符串不是dom

回答
編輯回答
冷咖啡

提供下非正則的方式

如果是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);
2017年1月2日 23:42
編輯回答
眼雜

正則匹配的話就這樣

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)/是“零寬度正回顧后發(fā)斷言”賊基爾長/(?=somePattern)/是“零寬度正預(yù)測先行斷言”賊基爾長*2,/somePattern/g是全局匹配,/somePattern/i是大小寫不敏感,/somePattern*?/是懶惰匹配。

2017年4月20日 23:11
編輯回答
舊城人
var html="<pre><code>console.log(1);</code></pre><pre><code>console.log(2);</code></pre>";
 html.replace(/<pre><code>(.*?)<\/code><\/pre>/g, "$1");
2018年6月15日 12:54