我们如何在javascript中的正则表达式中添加替换函数的值

时间:2017-07-20 15:09:11

标签: javascript regex

我有一个ng-style="$ctrl.getStyle()" function getStyle() { if (some condition) { return { background-color: #52b6db; border: 1px solid #52b6db; } else { return {...} } ,我写了以下正则表达式:

string="2 HOUR PARKING 7AM-6PM"

这会导致 var string = "2 HOUR PARKING 7AM-6PM" var reg =new RegExp(/([0-9])AM\-([0-9])PM/ig); string = string.replace(reg,"$1-$2") ,但我希望得到像 2 HOUR PARKING 7-6 这样的结果,因为下午6点意味着18:00 。如何在替换时动态地将数字添加到$ 2? 我甚至试过这个:

2 HOUR PARKING 7-18

但是replace函数将其视为字符串,结果为string = string.replace(eg,"$1-$2\+12")

如果有人可以帮助我,那将会很棒。 感谢

1 个答案:

答案 0 :(得分:1)

您可以pass in a function to the string replace参数来计算时间的24小时值。

function convertTime(time, ampm) {
  time = parseInt(time);

  if (ampm.toUpperCase() === "PM")
    time += 12;

  return time;
}

var str = "2 HOUR PARKING 7AM-9PM";
var reg = new RegExp(/([0-9]+)(AM|PM)-([0-9]+)(AM|PM)$/i);

str = str.replace(reg, function(match, from, fromP, to, toP) {
  return convertTime(from, fromP) + "-" + convertTime(to, toP);
});

console.log(str);