首页 > 解决方案 > Google App Script - Regex - SyntaxError: Invalid quantifier Error

问题描述

尝试在电子邮件正文中过滤带有某些短语的 gmail 消息。我对搜索词的输入如下。不确定使用\W是否正确。

取消 | 程序状态 = 错误 | 程序状态 = 跳过 | 程序状态 = Long\srunning | 程序状态 = 已停止 | 计划状态 = 已取消 | 状态:错误 | 状态:跳过 | 状态:长期\srunning | 状态:已停止 | 状态:已取消 |计划状态:已安排 | 程序状态:已暂停 | 程序状态:Awaiting\sTriggered | 程序状态:就绪 | 节目状态:活跃 | 程序状态:不活动)(\W|$)

当我运行脚本时。我得到SyntaxError: Invalid quantifier Error

我正在使用的代码是:

 var mFrom = sheet.getRange("J2").getValue();
 var notinSubject = sheet.getRange("K2").getValue();
 var input= sheet.getRange("I2").getValue();
 var keyWord = sheet.getRange("L2").getValue();
 var casebyWho = sheet.getRange("M2").getValue();

 var pafcSearchQuery = "from:"+mFrom+" before:"+nextDate+"after:"+theDate+ 
 "-subject: "+notinSubject+ " -is:sent ";
  Logger.log(pafcSearchQuery);
  var threads = GmailApp.search(pafcSearchQuery, 0, 500);

 Logger.log(input);
 for(var i=0; i<threads.length; i++)
  {
    var messages = threads[i].getMessages();
   // Utilities.sleep(1000);

    for (var m = 0; m < messages.length; m++) {
      var msg = messages[m].getBody();
      if (msg.search(input) !== -1) {

      yCount = yCount + threads[i].getMessageCount();
     }
  }
}
sheet.appendRow([labelName,yCount]);

我不精通正则表达式的用法。任何朝着正确方向的轻推或建议都会有所帮助。

我根据 G Suite 管理员帮助页面https://support.google.com/a/answer/1371417?hl=en的正则表达式示例中的示例使用了正则表达式

截屏

标签: regexgoogle-apps-script

解决方案


您的正则表达式启动一个不区分大小写的模式修饰符:(?i)。这会导致 Google Apps 脚本出错,因为JavaScript 不支持正则表达式模式修饰符

i相反,您可以通过设置这样的标志来使您的正则表达式不区分大小写
/YOUR_REGEX/i

或者在基于输入字符串(如您的情况)定义您的正则表达式时,您会这样做
new RegExp( YOUR_REGEX_STRING, 'i' )


推荐阅读