javascript - 正则表达式匹配唯一结果

标签 javascript regex

我有以下情况,我正在 HTML 字符串中搜索属性。

我有以下正则表达式,但我想得到唯一的结果,当然我可以对结果数组应用一些过滤器,但我认为这可以通过纯正则表达式实现。

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

所以在这种情况下类被返回两次,但我只想要 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))

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

最佳答案

您可以将.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))])

关于javascript - 正则表达式匹配唯一结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707906/

相关文章:

c# - 查找字符串中的十六进制数,然后将其转换为十进制

python - 从文本中抓取行但未能获得多个返回

用于提取组的 JavaScript 正则表达式迭代器

python - 在 Python 中检测 re (regexp) 对象

javascript - Vue js 似乎将嵌套对象作为字符串返回?

javascript - 添加 ngmodel 时输入值被隐藏

javascript - 如果 href=url 更改/添加类到父元素

javascript - 无法读取未定义的属性 'state'

javascript - ad.unshift()、content中的内容是什么意思?

ruby - 如何为类似字符串的正则表达式