Javascript 谷歌应用程序脚本中的转义正则表达式文字
我不知道为什么这不起作用——我已经使用了我在网上找到的一个更好的正则表达式工具来验证它,并且我正在使用+符号前面的转义字符“\”来将它变成文字“+”,但是谷歌脚本不断抱怨说“无效的量词”+”(第2行) 以下是我的脚本,省略了某些个人详细信息(当我使用此帐户作为硬垃圾邮件过滤器时,用于清除电子邮件): 函数getEmailData(){ var find\u email\u regex=new RegExp(“myemail(+.*124;)\@gmail.com”); var emails=GmailApp.getChatThreads(); var过程_email=“”; 试一试{ 对于(i=0;iJavascript 谷歌应用程序脚本中的转义正则表达式文字,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
这是字面意思,但我运气不好。请协助,谢谢。您需要对
\
进行双重转义,因为它是字符串转义字符
new RegExp("myemail(\\+.*|)@gmail\\.com");
您可以使用以下选项:
RegExp("myemail(\\+.*?|)@gmail\\.com");
^ ^ ^ ^^
- 您需要转义字符(特殊字符为双转义)
- 在
com
- 无需逃避
@
- 也要使
非贪婪*
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/;