Javascript JS regexp:exec():“;“合并”;不同的组得到相同的结果
一个简化的示例:使用此正则表达式Javascript JS regexp:exec():“;“合并”;不同的组得到相同的结果,javascript,regex,Javascript,Regex,一个简化的示例:使用此正则表达式 /^(?:(a)(b)|(c)(d))$/.exec(value); 如果匹配,则结果为5个元素的数组,或者 ["ab", "a", "b", undefined, undefined] 或 是否可以通过某种方式更改正则表达式以获得以下结果?或者 ["ab", "a", "b"] 或 但仍然不匹配“ad”或“cb” (请注意,a、b、c和d实际上应该是任意复杂的正则表达式)。是的,您可以使用数组#filter()方法: m = /^(?:(a)(b)|(c
/^(?:(a)(b)|(c)(d))$/.exec(value);
如果匹配,则结果为5个元素的数组,或者
["ab", "a", "b", undefined, undefined]
或
是否可以通过某种方式更改正则表达式以获得以下结果?或者
["ab", "a", "b"]
或
但仍然不匹配“ad”或“cb”
(请注意,a、b、c和d实际上应该是任意复杂的正则表达式)。是的,您可以使用
数组#filter()
方法:
m = /^(?:(a)(b)|(c)(d))$/.exec('ab').filter(Boolean);
//=> ["ab", "a", "b"]
可能愚蠢的答案是:D
var result = /^(a)(b)$/.exec(value) || /^(c)(d)$/.exec(value);
当然,就这么简单。在考虑正则表达式本身时,没有看到这个明显的解决方案。谢谢,我会在我能接受的时候(10分钟内)接受。
m = /^(?:(a)(b)|(c)(d))$/.exec('ab').filter(Boolean);
//=> ["ab", "a", "b"]
var result = /^(a)(b)$/.exec(value) || /^(c)(d)$/.exec(value);