Google App脚本-正则表达式-SyntaxError:无效的量词错误

时间:2018-12-26 10:21:14

标签: regex google-apps-script

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

  

(?i)(\ W | ^)(程序实例状态:错误|程序实例状态:已跳过|程序实例状态:Long \ srunning |程序实例状态:已停止|程序实例状态:已取消|程序状态=错误|程序状态=已跳过|程序状态=已运行\正在运行|程序状态=已停止|程序状态=已取消|状态:错误|状态:已跳过|状态:已运行|状态:已停止|状态:已取消|程序状态:已计划|程序状态:暂停|程序状态:等待\ sTriggered |程序状态:就绪|程序状态:活动|程序状态:不活动)(\ W | $)(\ W | ^)(程序实例状态:错误|程序实例状态:   跳过程序实例状态:长时间运行程序实例   状态:已停止|程序实例状态:已取消|计划状态=   错误程序状态=已跳过程序状态=长时间\正在运行|   程序状态=已停止|程序状态=已取消|状态:错误   |状态:已跳过状态:长时间\正在运行|状态:已停止|状态:   计划状态已取消|已调度|程序状态:已暂停|   程式状态:Awaiting \ sTriggered |程序状态:就绪节目   状态:有效|程序状态:无效)(\ W | $)

运行脚本时。我收到 SyntaxError:无效的量词错误

我正在使用的代码是:

 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]);

我不太熟悉Regex的用法。向正确方向的任何微调或建议都会有所帮助。

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

Screenshot

1 个答案:

答案 0 :(得分:0)

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

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

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