Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 正则表达式忽略捕获组顺序_Javascript_Regex_Swap_Capturing Group - Fatal编程技术网

Javascript 正则表达式忽略捕获组顺序

Javascript 正则表达式忽略捕获组顺序,javascript,regex,swap,capturing-group,Javascript,Regex,Swap,Capturing Group,请在chrome中打开以下URL=> 正则表达式: \b(f|fall|w|winter|s|spring|su|summer)\b\s*(?<!\d)(\d{4}|\d{2})(?!\d) 我定义的正则表达式适用于所有测试字符串,但交换捕获组顺序时除外(2016年秋季或16f或18Su) 正则表达式中是否有一种方法可以忽略RegExp捕获组的顺序?您可以使用两个部分的替换,其中年份和季节是交换的,然后只捕获匹配的捕获: \b(?:(f(?:all)?|w(?:inter)?|s(?:p

请在chrome中打开以下URL=>

正则表达式:

\b(f|fall|w|winter|s|spring|su|summer)\b\s*(?<!\d)(\d{4}|\d{2})(?!\d)
我定义的正则表达式适用于所有测试字符串,但交换捕获组顺序时除外(2016年秋季或16f或18Su)
正则表达式中是否有一种方法可以忽略RegExp捕获组的顺序?您可以使用两个部分的替换,其中年份和季节是交换的,然后只捕获匹配的捕获:

\b(?:(f(?:all)?|w(?:inter)?|s(?:pring|u(?:mmer)?)?)\s*(\d{2}(?:\d{2})?)|(\d{2}(?:\d{2})?)\s*(f(?:all)?|w(?:inter)?|s(?:pring|u(?:mmer)?)?))\b

我与您的备选方案签订合同,以提高匹配效率:所有备选方案只应在唯一的位置匹配。词的界限似乎对你的情况足够了

在JS中,您可以动态构建模式:

var-strs=['2018年秋季','2018年秋季','2016年秋季','F2016','2016年秋季'];
var season=“(f(?:all)?w(?:inter)?s(?:Spring(?:u(?:mmer)?)?”;
var year=“(\\d{2}(?:\\d{2})”;
var p=new RegExp(\\b(?“+seasure+”\\s*“+year+“|“+year+”\\s*“+seasure+”)\\b”,“i”);
var结果=[],m;
用于(STR的var s){
m=s.match(p);
如果(m){
if(m[1]){
log(m[1],“:”,m[2]);
}否则{
log(m[3],“:”,m[4]);
}
}

}
请在chrome中打开下面的URL
不要告诉人们去外部网站,在你的问题中发布所有相关的代码。@CertainPerformance即使他发布了regex,我们也必须去regex101或类似的地方。@revo关键是,如果将来链接断开,这个问题将不会对任何人负责或有帮助。如果正则表达式有问题,这种情况就不会发生。@Sweeper是的,我知道你在说什么,但你没有明白我的意思。然而,在未来——我不认为你所谈论的未来是在接下来的几秒钟内——这可能得到了答案,或者已经结束了。所以不必担心没有责任。这对任何人都没有帮助。我更新了问题,加入了正则表达式。你们应该解释你们真正的问题是什么。我们看看正则表达式是如何工作的,你到底需要什么?为什么您认为您需要相同的分组订购?对于提供的每个示例字符串,最终结果应该是什么样的?请注意,您当前的正则表达式(在本文中)不需要lookback,它与相同。另外,为什么不使用4个组并检查哪一个匹配以在结果数组中获得正确的值?看见
\b(?:(f(?:all)?|w(?:inter)?|s(?:pring|u(?:mmer)?)?)\s*(\d{2}(?:\d{2})?)|(\d{2}(?:\d{2})?)\s*(f(?:all)?|w(?:inter)?|s(?:pring|u(?:mmer)?)?))\b