如果以下字符串为

break, if following string is <div>

本文关键字:字符串 如果      更新时间:2023-09-26
,则中断。

>我想在#之后找到字符串,如果#a#a&nbsp;<div>..我有问题都在努力返回a,但如果#a<div>..会返回a<div>.

如何避免如果以下字符串<div><br><p>而不仅仅是中断,
例如 #a<div>bc - a

https://regex101.com/r/xD1vN0/1

var re = /#([^#'s]*)/g;
您可以使用带有

缓和贪婪令牌的正则表达式:

/#((?:(?!<(?:div|br|p)>)[^#'s])*)/g

(?:(?!<(?:div|br|p)>)[^#'s])*是一个温和的贪婪标记,它匹配除#和空格以外的任何字符,这些字符不会开始<div><br><p>序列。

JS演示:

var re = /#((?:(?!<(?:div|br|p)>)[^#'s])*)/g; 
var str = `#a<div>
#b<br>
#c<p>
#d<hi>`;
var res = [];
 
while ((m = re.exec(str)) !== null) {
    res.push(m[1]);
}
document.body.innerHTML = "<pre>" + JSON.stringify(res.map(x => x.replace(/</g,"&lt;").replace(/</g,"&gt;")), 0, 4) + "</pre>";

您可以使用

此模式在达到<时中断

var re = /#([^#'s^<]*)/g;