Javascript 谷歌应用程序脚本中的转义正则表达式文字

Javascript 谷歌应用程序脚本中的转义正则表达式文字,javascript,regex,google-apps-script,Javascript,Regex,Google Apps Script,我不知道为什么这不起作用——我已经使用了我在网上找到的一个更好的正则表达式工具来验证它,并且我正在使用+符号前面的转义字符“\”来将它变成文字“+”,但是谷歌脚本不断抱怨说“无效的量词”+”(第2行) 以下是我的脚本,省略了某些个人详细信息(当我使用此帐户作为硬垃圾邮件过滤器时,用于清除电子邮件): 函数getEmailData(){ var find\u email\u regex=new RegExp(“myemail(+.*124;)\@gmail.com”); var emails=Gm

我不知道为什么这不起作用——我已经使用了我在网上找到的一个更好的正则表达式工具来验证它,并且我正在使用+符号前面的转义字符“\”来将它变成文字“+”,但是谷歌脚本不断抱怨说“无效的量词”+”(第2行)

以下是我的脚本,省略了某些个人详细信息(当我使用此帐户作为硬垃圾邮件过滤器时,用于清除电子邮件):

函数getEmailData(){ var find\u email\u regex=new RegExp(“myemail(+.*124;)\@gmail.com”); var emails=GmailApp.getChatThreads(); var过程_email=“”; 试一试{ 对于(i=0;i 有什么明显的原因可以解释为什么它总是说无效的量词? 我的目标是注册我的地址的两种变体,因为垃圾邮件发送者可能会发送一封包含大量列表的电子邮件,我只想从中解析出我的电子邮件以供进一步处理

它需要处理: 我的邮件+stuff@gmail.com myemail@gmail.com


这是字面意思,但我运气不好。请协助,谢谢。

您需要对
\
进行双重转义,因为它是字符串转义字符

new RegExp("myemail(\\+.*|)@gmail\\.com");

您可以使用以下选项:

RegExp("myemail(\\+.*?|)@gmail\\.com");
                ^    ^  ^      ^^
  • 您需要转义字符(特殊字符为双转义)
  • com
  • 无需逃避
    @
  • 也要使
    *
    非贪婪

正如其他人所说,字符串文字占用了反斜杠,因此regexp没有。可以将反斜杠加倍,也可以使用regexp文本而不是将字符串转换为regexp:

var find_email_regex = /myemail(\+.*|)@gmail\.com/;

优点:更清晰(如果您只创建一个对象而不是两个对象,那么应该会快一点)。

它应该是
RegExp(“myemail(\\+.*)?@gmail\\\.com”)
@AvinashRaj:我认为应该有一个免责声明:
/(x |)/
并不完全等同于
(x)?
(在没有
x
的情况下,一个捕获
,一个
未定义的
)。而
((?:x)?)
是个难题:pit是基于语言的。@AvinashRaj:问题被标记为
javascript
。当然,为了OP的目的,两者都应该很好,但是。。。未来证明。谁知道是谁在读。我似乎已经找到了一批正则表达式专家,所以既然这有点相关,JS中有没有办法将“randomstuff”从“myemail”中分离出来+randomstuff@gmail.com“返回的结果中是否包含+或@?
var find_email_regex = /myemail(\+.*|)@gmail\.com/;