Javascript 如何正则表达式Zapier并获得输出?
我经常收到来自同一个人的电子邮件,每封邮件都包含一个或多个唯一的识别码。我需要那些密码 电子邮件正文包含大量不一致的电子邮件内容,但我感兴趣的是字符串。他们看起来像Javascript 如何正则表达式Zapier并获得输出?,javascript,python,zapier,Javascript,Python,Zapier,我经常收到来自同一个人的电子邮件,每封邮件都包含一个或多个唯一的识别码。我需要那些密码 电子邮件正文包含大量不一致的电子邮件内容,但我感兴趣的是字符串。他们看起来像 loYm9vYzE6Z-aaj5lL_Og539wFer0KfD FuZTFvYzE68y8-t4UgBT9npHLTGmVAor JpZDRwYzE6dgyo1legz9sqpVy_F21nx8 ZZ3RWYZE63P3UWX2ANPI-c4PMo7bFmj 这些字符串的共同点是,它们的长度都是32个字符,并且都是由大写、小写
- loYm9vYzE6Z-aaj5lL_Og539wFer0KfD
- FuZTFvYzE68y8-t4UgBT9npHLTGmVAor
- JpZDRwYzE6dgyo1legz9sqpVy_F21nx8
- ZZ3RWYZE63P3UWX2ANPI-c4PMo7bFmj
我需要一些人帮我翻山。谢谢。这里是Zapier平台团队的David 我很高兴你对代码步骤表现出兴趣。假设您的假设(准确地说是32个字符)总是正确的,这应该是相当简单的 首先是正则表达式。我们想寻找一个字母、数字或标点符号的字符。幸运的是,javascript的
\w
相当于[A-Z0-9a-z!]
,它涵盖了除-
之外的所有示例中的基础,我们将手动包括-
。最后,我们需要的字符串长度正好是32个字符,所以我们需要它。我们还希望添加global标志,以便查找所有匹配项,而不仅仅是第一个匹配项。因此,我们有以下几点:
/[\w-]{32}/g
您已经在中介绍了映射身体,所以这很好。javascript代码如下所示:
//存储具有匹配项的任意长度(0或更多)的数组
var matches=inputData.body.match(/[\w-]{32}/g)
//.map函数每次执行一次无名的内部函数
//元素,并返回带有结果的新数组
//[{str:'loYm9vYzE6Z-aaj5lL_Og539wFer0KfD'},]
return(匹配| |[]).map(函数(m){return{str:m})
在这里,您将利用代码步骤的一个未记录的特性:当您返回一个对象数组时,后续步骤将对每个对象执行一次。如果返回一个空数组(如果找不到键,则会发生这种情况),zap将停止,并且不会发生其他任何事情。当您进行测试时,除了第一个结果之外,没有任何指标表明任何东西都起作用。一旦你的zap启动并真正运行,它就会像这里描述的那样扇出
就这些!希望这一切都有意义。如果你还有其他问题,请告诉我 @xaadavid,谢谢你的参与-这很清楚。然而,虽然正则表达式似乎工作得很好,而且我可以通过“运行Javascript”操作从“Gmail:New Email Matching Search”触发器中识别一个这样的字符串,但它会在一处停止(与您注释的相同。我的测试电子邮件正文包括三个这样的代码。我正在测试的操作(包括从仪表板实时运行)就是用“str”给自己发一封电子邮件,“runjavascript”的产品输出“str”。但只发送了一个电子邮件操作。我如何才能让多个操作发生,正如您所建议的,每个找到的项目一个操作?没问题,很高兴我能提供帮助。如果您从代码步骤成功返回多个对象,扇出应该可以工作。为了验证这一点,您可以调整上面的代码,将第二行的结果作为子键r返回a而不是对象。也就是说,
返回{results:[{str:'asdf'},…]}
。然后您可以验证正则表达式是否找到了您期望的所有键,并从那里开始。结果:Bargle。我们在创建运行javascript时出错:-(错误:SyntaxError:意外标记)
我不明白什么,可能是关于…
?更正-如果我让它在真实世界中的实时数据和新电子邮件上运行,它似乎工作得很好。这看起来很神奇。谢谢,xavdid!啊,是的,…
只是为了说明那里有更多的代码。很高兴它工作了不过!如果它解决了您的问题,请确保将我的答案标记为已接受,以帮助未来的搜索者。