javascript正则表达式拆分<p> x </p>

时间:2016-05-30 11:15:33

标签: javascript regex

我希望每个p标签分割一个HTML字符串,以便得到以下数组:

array{
 '<p>my text</p>',
 '<p>my text2</p>',
 ...
}

这就是我的尝试:

array = articleContent.split(/<p>|(?=<\/p>)/g);

但结果是:

array{
 '</p><p>my text',
 '</p><p>my text2',
 ...
}

4 个答案:

答案 0 :(得分:0)

你可以这样做!

const re = /\<p>.*?<\/p>/g; //check anything that start/end with tag
const article = "<p>lorem</p> asteroids <p>Ipsum</p>";
const matches = article.match(re); //get the matches
var r = Array.from(matches); //create an array from matches!
console.log(r); // CHECK OUT!

答案 1 :(得分:-1)

尝试使用以下正则表达式。如果您可以使用示例数据更新问题,那就太棒了。

/(<p>[A-Za-z\s0-9]+<\/p>)/g

检查输出here

答案 2 :(得分:-1)

此:

/<p>(.*)<\/p>/g.exec('<p>my text</p>')[1];

返回:

"my text"

答案 3 :(得分:-1)

你可以选择

/<p\b.*?<\/p\b[^>]*>/g

它会匹配初始标记以及截至结束标记的所有内容(包括属性)。当然......如果你有嵌套标签,你就搞砸了。

像这样获得每场比赛:

&#13;
&#13;
var str='<p style="border:1px solid #000">First paragraph with a border</p> is my <p style="color:red">Next paragraph in red</span></p>',
	re = /<p\b.*?<\/p\b[^>]*>/g,
    m,
    resultingArray = [];

while (m = re.exec(str) )
{
    resultingArray.push(m[0]);
}

document.write(resultingArray.join('--------------------') + '<br/>');
&#13;
&#13;
&#13;