我想用正则表达式 /<[^>]*>/g
匹配字符串中的所有 html 标签
但有些标签的属性值中带有“">”,例如 <div :if="x > 1">
,只能得到<div :if="x>
结果。
如何修改正则表达式来解决这个问题?
<小时/>实际上,我不需要匹配所有真正有效的 html 标签。我只需要匹配所有 <***>
,其中“>”不能用引号引起来。
最佳答案
如果您有已解析的 HTML,您可以使用 css 选择器和 document.querySelectorAll
来执行查找元素的操作。
'[\\:if*=\\>]'
使用转义字符 \\
可以直接搜索标记名 :if
并使用 *=
选择器,您可以在属性值的任何位置找到 >
(转义)。
不过,我同意@JonathanLowowski。属性名称 :if
看起来不正确,并且在 IE 中可能会失败。但它看起来确实像一个没有命名空间的命名空间属性。
const elements = document.querySelectorAll('[\\:if*=\\>]')
console.log(elements)
<div :if="x > 1"></div>
<div :if="x"></div>
关于javascript - 如果属性值可能包含 ">"字符,则使用 JavaScript Regex 匹配所有 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40956430/