如何检查正则表达式中的两个组在匹配函数内是否相等

时间:2017-08-24 16:28:57

标签: javascript regex

我有一个间隔信息,例如"周六8-11,周六11-18和#34;我想检查第一个间隔(11)中的第二个小时是否等于第二个间隔(11)中的第一个小时,然后将这两个小时合并为一个"星期六8-18"。 如果有人给我一个暗示,这将是伟大的。

2 个答案:

答案 0 :(得分:2)

您可以使用replace使用反向引用来执行此操作:

var s = "Sat 8-11, Sat 11-18";

s = s.replace(/([a-z]+) (\d+)-(\d+), \1 \3-/i, "$1 $2-");
console.log(s);

答案 1 :(得分:0)

使用具有特定正则表达式模式的String.prototype.match()函数的解决方案:



var s = "Sat 8-11, Sat 11-18",
    r = s.match(/([A-Z][a-z]+) (\d{1,2})-(\d{1,2}), \1 (\d{1,2})-(\d{1,2})/);

// if the input string matches the pattern and the second hour 
// in the first interval equals to the first hour in the second interval 
if (r.length == 6 && r[3] == r[4]) {
    s = r[1] +' '+ r[2] +'-'+ r[5];
}
console.log(s)