Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS regexp:exec():“;“合并”;不同的组得到相同的结果_Javascript_Regex - Fatal编程技术网

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);