简化示例:使用此正则表达式
/^(?:(a)(b)|(c)(d))$/.exec(value);
如果匹配,会产生一个包含5个元素的数组
["ab", "a", "b", undefined, undefined]
或
["cd", undefined, undefined, "c", "d"]
是否可以通过某种方式更改正则表达式以获得以下结果?任
["ab", "a", "b"]
或
["cd", "c", "d"]
但仍不匹配“ad”或“cb”?
(注意a,b,c和d实际上应该是任意复杂的正则表达式。)
答案 0 :(得分:3)
是的,您可以使用Array#filter()
方法:
m = /^(?:(a)(b)|(c)(d))$/.exec('ab').filter(Boolean);
//=> ["ab", "a", "b"]
答案 1 :(得分:0)
可能的愚蠢回答:D
var result = /^(a)(b)$/.exec(value) || /^(c)(d)$/.exec(value);