在这样的文字中:
<p>1 bla bla <em>bla</em> bla bla</p><p>2 bla bla <em>bla</em> bla TEXT bla</p><p>3 bla bla <em>bla</em> bla bla</p><p>4 bla bla <em>bla</em> bla TEXT bla</p><p>5 bla bla <em>bla</em> bla bla</p>
我必须找到包含字符串“TEXT”的段落(p
标签之间)
我tried <p>.*?(TEXT).*?<\/p>
我tried <p>(?!<p>).*?(TEXT).*?<\/p>
但它没有解决问题。
答案 0 :(得分:3)
((?!<\/p>).)*(TEXT)
确保一个<p></p>
var regex = /<p>((?!<\/p>).)*?(TEXT).*?<\/p>/g;
var text = '<p>1 bla bla <em>bla</em> bla bla</p><p>2 bla bla <em>bla</em> bla TEXT bla</p><p>3 bla bla <em>bla</em> bla bla</p><p>4 bla bla <em>bla</em> bla TEXT bla</p><p>5 bla bla <em>bla</em> bla bla</p>';
console.log(text.match(regex));
答案 1 :(得分:1)
当我在崇高文本的搜索栏中尝试激活正则表达式时,你写的第一个对我有用。
<p>.*?(TEXT).*?<\/p>
你只需要添加开始和结束分隔符,如(...)或{...}或/.../或[...]所以试试这样:
/<p>.*?(TEXT).*?<\/p>/
我认为没有分隔符只是一种模式,并且在它们中它是javascript中的正则表达式... 添加&#34;我&#34;之后用于不区分大小写的搜索
/<p>.*?(TEXT).*?<\/p>/i
答案 2 :(得分:0)
因为它是一个字符串,(由@Rajesh说),只需创建一个div
元素并将其添加到其中。
使用p
获取所有querySelectorAll
代码,然后使用forEach
功能。
检查innerHTML
/TEXT/
,如果找到,请将其推入阵列。
在下面的程序中,数组a
包含2个匹配的标记
var str="<p>1 bla bla <em>bla</em> bla bla</p><p>2 bla bla <em>bla</em> bla TEXT bla</p><p>3 bla bla <em>bla</em> bla bla</p><p>4 bla bla <em>bla</em> bla TEXT bla</p><p>5 bla bla <em>bla</em> bla bla</p>";
var div=document.createElement("div");
div.innerHTML=str;
var a=[];
div.querySelectorAll("p").forEach(x=>{if(/TEXT/.test(x.innerHTML)) a.push(x);});
console.log(a);
如果您不想使用<p></p>
代码,只需按textContent
var str="<p>1 bla bla <em>bla</em> bla bla</p><p>2 bla bla <em>bla</em> bla TEXT bla</p><p>3 bla bla <em>bla</em> bla bla</p><p>4 bla bla <em>bla</em> bla TEXT bla</p><p>5 bla bla <em>bla</em> bla bla</p>";
var div=document.createElement("div");
div.innerHTML=str;
var a=[];
div.querySelectorAll("p").forEach(x=>{if(/TEXT/.test(x.innerHTML)) a.push(x.textContent);});
console.log(a);
答案 3 :(得分:-1)
您可以尝试这样的事情:
var str = "<p>1 bla bla <em>bla</em> bla bla</p><p>2 bla bla <em>bla</em> bla TEXT bla</p><p>3 bla bla <em>bla</em> bla bla</p><p>4 bla bla <em>bla</em> bla TEXT bla</p><p>5 bla bla <em>bla</em> bla bla</p>";
var groupRegex = /(?:^|<p>)(.*?)(?:<\/p>|$)/g;
var searchRegex = /text/i
var groups = str.match(groupRegex);
var result = groups.filter(function(s){ return searchRegex.test(s) })
console.log(result)
&#13;