Google Scripts与正则表达式匹配

时间:2017-07-16 13:48:53

标签: javascript regex gmail-api

使用谷歌脚本我试图匹配总是如下所示的字符串部分: * YYYYMMDD; HHMM * 例如:* 20170701; 0900 *

我定义了这个正则表达式:

var regExp = ('(?:\*)(?P<date>\d+)(?:\;)(?P<time>\d+)(?:\*)','gi');

然后使用:

调用它
var datepart = textbody.match(regExp);

但我没有得到任何匹配,尽管https://regex101.com/中的相同文字效果很好。知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

您为PCRE引擎创建了一个正则表达式,而在Google Apps脚本中,您应该使用一个用于JavaScript。

删除所有已命名的捕获组(JS不支持它们,即(?P<date>\d+) =&gt; (\d+)),使用正则表达式文字(即RegExp("pattern", "gi") =&gt; {{1} },但此处不需要/pattern/gi,只有在模式中有字母时才使用它,删除全局修饰符以与捕获组完整匹配。

i

请注意var rx = /\*(\d+);(\d+)\*/; var datepart = textbody.match(rx); var date, time; if (datepart) { date = datepart[1]; time = datepart[2]; } = (?:\*),因为非捕获组仍然是消费模式(即它匹配的内容会添加到匹配值)。由于您希望获得正则表达式的子部分,因此您只需要关注捕获组,即\*部分。