我不是一个新的编码器,但是谷歌应用程序脚本的新手。我正在尝试获取字符串并找到字符串中包含的电子邮件地址。
string =“这是我要看的小区的主体。这个小组在这里有一封电子邮件,比如john.doe@aol.com。”;
email = FindEmail(string);
MailApp.sendEmail(电子邮件,“完成电子邮件”,“”,“这是电子邮件”);
我需要构建一个名为FindEmail的函数,但坦率地说不知道如何启动。
答案 0 :(得分:4)
虽然SO已经有很多解决方案,但我发现这些解决方案需要调整才能提供您所需的简单性。
这是一个简单的函数,从所有其他答案中浓缩而来 - 实际上,正则表达式有点过分,但在很多情况下也可用于验证。它返回一个数组的地址,所以如果你只想要第一个地址,你可以编写email = findEmails(string)[0]
...但实际上,你应该在信任之前做一些错误检查。
/**
* Return an array of all email addresses found in input string.
*/
function FindEmails(input) {
var regex = /(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/gm
var result = input.match(regex);
return result;
}
答案 1 :(得分:1)
电子邮件地址解析库"电子邮件地址"已适用于Google Apps脚本。来源是forked and available as a gist。
然而......它不会在您提供的字符串示例中找到电子邮件地址!它期望包含地址的字符串松散地符合RFC 5322。