js / GAS中的字符串替换正则表达式无效量词

时间:2018-10-03 16:28:58

标签: javascript regex string

基于https://www.plivo.com/blog/Send-templatized-SMS-from-a-Google-spreadsheet-using-Plivo-SMS-API/,我有以下代码:

function createMessage(){
  data = {
    "SOURCE" : "+1234567890",
    "DESTINATION" : "+2345678901",
    "FIRST_NAME" : "Jane",
    "LAST_NAME" : "Doe",
    "COUPON" : "DUMMY20",
    "STORE" : "PLIVO",
    "DISCOUNT" : "20",
  }

  template_data = "Hi   , your coupon code for discount of % purchase at  is "
  Logger.log(data);

  for (var key in data) {
    Logger.log(key);

    if (data.hasOwnProperty(key)) {
      template_data = template_data.replace(new RegExp('+key+', 'gi'),data[key]); // error here
    }
  }
  Logger.log(template_data);
  return template_data;
}

当我运行createMessage时,我得到了:

SyntaxError: Invalid quantifier +. (line 57, file "Code")

从上一个问题开始,如果我理解正确,则循环遍历每个键,值对以不区分大小写的方式(i)查找键(g)的所有匹配项。

我不理解模式'+ key +',这会导致错误,尽管在https://regex101.com/r/CF967t/2进行测试似乎可行,但我尝试测试'+ SOURCE +'等模式也给出了相同的错误。

有人可以给我解释一下问题吗

1 个答案:

答案 0 :(得分:2)

sign +通常是重复运算符,使前面的令牌重复一次或多次,将key +表示为key **

您只能通过密钥

template_data = template_data.replace(new RegExp(key, 'gi'),data[key]);