我正在尝试使用RegExp找到几个文本匹配,所有这些匹配都显示在一个模式中。 例如: 假设我有一个包含“文本数组”的div标签:
<div class="example" data-uris="[a][b][c]" data-title=".../>
我正在尝试使用regexp做的是找到3组:a,b和c。 当然所有这些都遵循一定的div,并且会看到引号和其他属性,这些属性在字符串中只显示一次,并且每个组都重复包含在方括号内。 但是,构建正则表达式只会提供第一组:a。
有什么想法吗?
答案 0 :(得分:0)
以下是使用regexp exec
方法的扩展解决方案:
<div class="example" data-uris="[abc][bde][cfg]" data-title=""></div>
var div = document.getElementsByClassName('example')[0],
uris = div.getAttribute('data-uris'),
match,
matches = [],
pattern = /\[([a-z]+)+?\]+/g;
while((match = pattern.exec(uris)) != null){
matches.push(match[1]);
}
console.log(matches);
// output: Array [ "abc", "bde", "cfg" ]
代码段:
var div = document.getElementsByClassName('example')[0],
uris = div.getAttribute('data-uris'),
match,
matches = [],
pattern = /\[([a-z]+)+?\]+/g;
while((match = pattern.exec(uris)) != null){
matches.push(match[1]);
}
console.log(matches);
<div class="example" data-uris="[abc][bde][cfg]" data-title=""></div>
答案 1 :(得分:0)
如果我正确理解了这个问题,这可能就是你要找的东西的开始:
// iteration through elements
var elements = window.document.all;
for (var i = 0, l = elements.length; i < l; i++) {
if (elements[i].localName === 'div') {
console.log(elements[i].outerHTML.match(/\[a\]\[b\]\[c\]/));
}
}
// match on the document's text
var html = window.document.documentElement.innerHTML;
console.log(html.match(/\[a\]\[b\]\[c\]/));