我有以下情况,我在HTML字符串中搜索属性。
我有以下正则表达式,但是我想获得独特的结果,当然我可以对结果数组应用一些过滤器,但我认为这可以用纯正则表达式实现。
https://regex101.com/r/UqCuJS/1
所以在这种情况下,类返回两次,但我只想要一次:
['class', 'data-text']
不是['class', 'data-text', 'class']
const html = `<div class="foo">
<span data-text="Some string" class="bar"></span>
</div>`
console.log(html.match(/[\w-:]+(?=\s*=\s*".*?")/g))
&#13;
答案 0 :(得分:5)
您可以将.match()
的结果传递给Set
,但不允许重复值。如有必要,请将Set
实例转换回Array
。
const html = `<div class="foo">
<span data-text="Some string" class="bar"></span>
</div>`
// or use existing `RegExp`
console.log([...new Set(html.match(/([\w-]+)(?=[=]")/g))])
答案 1 :(得分:0)
尝试删除&#39; / g&#39;全局修饰语
console.log(html.match(/[\w-:]+(?=\s*=\s*".*?")/))