regex - 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的正则表达式示例中的示例使用了正则表达式
解决方案
您的正则表达式启动一个不区分大小写的模式修饰符:(?i)
。这会导致 Google Apps 脚本出错,因为JavaScript 不支持正则表达式模式修饰符。
i
相反,您可以通过设置这样的标志来使您的正则表达式不区分大小写/YOUR_REGEX/i
:
或者在基于输入字符串(如您的情况)定义您的正则表达式时,您会这样做new RegExp( YOUR_REGEX_STRING, 'i' )
:
推荐阅读
- swift - 如何使自定义类可编码?
- java - 从 Firebase 实时数据库中检索数据
- list - 根据 id 过滤列表
- php - 尝试设置 Podio API,缺少 PodioAPI.php 文件
- react-native - 联合谷歌登录问题(aws amplify 和 rect native)
- sql - 大查询sql:月至今查询
- c++ - 如何在 C++ 中创建指向映射的键/值对的指针?
- amp-html - 元标记在 AMP 列表/Mustache 中被剥离
- spring-boot - 错误的响应类型版本控制spring api
- angular - 如何将表单图像与模型类绑定以使用角度保存图像?