我想要的是在多行字符串中找到与不同正则表达式的多个匹配,如下所示:
word1
word2
word1
word1
word2
word1
有3个数组,一个包含所有匹配项,它们出现在字符串中(['word1','word2','word1'...]),另外两个包含所有单独的匹配(word1和word2)。最后两个很容易,但我坚持第一个。我能实现这一目标的最有效方法是什么?如果可能的话,我宁愿不测试字符串3次,但如果这就是我必须做的事情,这不是什么大问题。
答案 0 :(得分:1)
一行一行,检查它是否与正则表达式匹配。然后,将它同时推送到相应的数组和集合数组。
var regex = /foo\d|bar\d/g,
str = "foo1\n\
bar1\n\
baz1\n\
foo2\n\
foo3\n\
bar2\n\
baz2\n\
foo4\n\
bar3\n\
foo5",
a = string.split('\n'),
foos = [],
bars = [],
both = [],
s;
for (var i = 0; i < a.length; i++) {
s = a[i];
if (/foo/.test(s)) {
foos.push(s);
both.push(s);
}
else if (/bar/.test(s)) {
bars.push(s);
both.push(s);
}
}