正则表达式 - 如何从字符串

时间:2018-04-26 03:38:37

标签: javascript regex

"TEXT&nbsp;<p>TEST1</p><br><div>&nbsp;<p>TEST2</p></div>" (字符串,而不是HTML)

在这里,我尝试捕获最后一个<p>标记,直到</p></div>。 (编辑:不只是之间的文字,我包括实际的字符串标签)

如何从</p><div>开始到包含“TEST2”而不是“TEST1”的下一个<p>?我遇到了这个问题,因为第一场比赛(前进)包含我正在寻找的比赛,而不是单独的比赛。

我知道我可以获取</p></div>的索引,然后向后循环,直到找到<p>,但这似乎效率低下。我也知道JavaScript中的RegEx不允许你根据这个答案(javascript regex search from end of string to begining)从字符串末尾进行搜索,所以只是发帖,因为我不知道更优化的解决方案。

2 个答案:

答案 0 :(得分:1)

使用负向前看:

<p>(?:.(?!<p>))+<\/div>

类似的问题:Regex Last occurrence?

答案 1 :(得分:-1)

&#13;
&#13;
var testStr='<p>TEST1</p><br><div>&nbsp;<p>TEST2</p></div>';
var matchesStr=testStr.match(/(\<[p]\>)(.|\;)*(\<\/p\>\<\/div\>){1}$/g);

// get your required result from array matchesStr 
console.log(matchesStr);

$('#matchResult').text(matchesStr.join(','));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="matchResult"></div>
&#13;
&#13;
&#13;