我不知道为什么这不起作用 - 我已经通过我在网上发现的一个更好的正则表达式工具来验证它,我之前使用的似乎是转义字符''之前这个标志使它成为一个文字'',但谷歌脚本一直在抱怨说“无效的量词”'(第2行)
这是我的脚本,其中包含某些个人详细信息(清除电子邮件,因为我将此帐户用作硬垃圾邮件过滤器)
function getEmailData() {
var find_email_regex = new RegExp("myemail(\+.*|)\@gmail.com");
var emails = GmailApp.getChatThreads();
var process_email = "";
try {
for (i = 0; i < emails.length; i++) {
for (x = 0; x < emails[i].getTo().length; x++) {
if (emails[i].getTo()[x].matches(find_email_regex)) {
email_triage(emails[i]);
break;
}
}
}
} catch (e) {}
}
function email_triage(email) {
var reject_regex = new RegExp("^[^\+]*$");
try {
if (email.matches(reject_regex)) {
email.moveThreadToTrash();
}
else {
email.getMessages()[0].forward("mymainemail@email.ca");
}
} catch (e) {}
}
有没有明显的理由说为什么它一直说无效量词?我的目标是对地址的两个变体进行正则表达式,因为垃圾邮件发送者可能会发送一个包含大量列表的电子邮件,而我只想解析其中的电子邮件以进行进一步处理 .
它需要处理:myemail stuff@gmail.com myemail@gmail.com
因此,文字,但我没有运气 . 请帮助,谢谢 .
3 回答
您可以使用以下内容:
你需要转义转义字符(特殊字符的双转义)
在
com
之前逃离点并且无需逃避
@
也使
.*
非贪心你需要双重转义
\
,因为它是一个字符串转义字符正如其他人所说,字符串文字正在吃你的反斜杠,所以regexp没有 . 你可以加倍反斜杠,或者你可以使用正则表达式文字而不是将字符串转换为正则表达式:
优点:更清晰(并且甚至应该更快,因为您只创建一个对象而不是两个对象) .