正则表达式匹配唯一结果

时间:2017-04-30 15:12:34

标签: javascript regex

我有以下情况,我在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;
&#13;
&#13;

http://jsbin.com/bekibanisa/edit?js,console

2 个答案:

答案 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*".*?")/))