RegEx 只查看 HTML 标签内的文本?

RegEx to only look at text inside HTML tags?

我最近开始 learning/using 正则表达式。

有没有办法避免匹配 HTML 标签属性或属于标签属性的词?

例如:

<p style=“position: absolute”>position: </p>

我试过了

/\bposition\b\W\s/g

但这两个实例都匹配。

我只能匹配第二个“位置:”吗?

澄清:

我正在尝试在文档中搜索用户输入的词并将其替换为包含这些词的 span 元素 - 这类似于“Ctrl + F”。仅仅拥有文本是不够的,因为一旦文本被 span 元素替换,我还需要一种方法来更新文档。

匹配 HTML / XML 标签的正则表达式是 /(<([^>]+)>)/ig。也许这就是您要找的。

let str = '<p style="position: absolute">position: </p>';
const strWithoutTag = str.replace(/(<([^>]+)>)/ig, '');
console.log(strWithoutTag);

免责声明:使用 document.innerText 和其他 DOM API 而不是 Regex。

匹配 HTML 个标签:

<.+?>/g

匹配 HTML 标签内的所有内容(也应处理嵌套标签):

/(?<=<.+.>)(.*?)(?=<.*\/.+.?>)/g

https://regex101.com/r/2uZHli/ 上面的例子。

您可以尝试正则表达式来匹配您的温度,它与第二个“位置:”相匹配。

/(?=\b.*(?<yourKeyword>position).*\b)(?<=<[^]*>)([^<>]+)(?=<\/([^<>]*)>)/g