来自“已接收”电子邮件标题的正则表达式匹配时间

时间:2019-07-26 10:55:54

标签: regex roundcube sieve

我正在尝试匹配标头以在roundcube上的过滤器中设置。我发现了与此有关的另一个问题,并尝试了答案,但这没有用。

在RegExr中进行测试时,正则表达式可以工作,但是roundcube只是拒绝保存它。

这是我的正则表达式:\s*(?:Sun|Mon|Tue|Weds|Thu|Fri|Sat),\s*\d+\s+\w+\s+\d+\s+(?:0[12345678]|1[89]|2[0123]):\d\d:\d\d

我在此答案中找到了答案,并根据自己的需要进行了调整:RegEx to match time in "Received: by" e-mail header

它应该与18:00 - 09:00之间的时间匹配。

我不是正则表达式专家,所以有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

(?: ... )在筛子中无效。 \s / \d / \w可能也不是。

请参阅:Sieve Email Filtering: Regular Expression ExtensionPOSIX ERE specother sieve documents

使用普通的组和字符类:

[:space:]*(Sun|Mon|Tue|Weds|Thu|Fri|Sat),[:space:]*[:digit:]+[:space:]+[:alpha:]+[:space:]+[:digit:]+[:space:]+(0[12345678]|1[89]|2[0123]):[:digit:][:digit:]:[:digit:][:digit:]

(我将\w替换为[:alpha:],但这可能不是您想要的。)

另外,请记住要require ["regex"];