匹配RFC 2822日期的最佳正则表达式是什么?RFC 2822日期正则表达式
基本上我想匹配Date: Sun, 19 Feb 2012 16:25:02 +0000
出现在我收到的一些电子邮件中,但理想情况是独立于语言。
我没有在网上找到下面的正则表达式,但不知道如何做一个月语言无关(但仍符合其他) - 我相信,一个月应该在规范3个字符,但不能完全确定...
/^(?:(Sun|Mon|Tue|Wed|Thu|Fri|Sat),\s+)?(0[1-9]|[1-2]?[0-9]|3[01])\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(19[0-9]{2}|[2-9][0-9]{3})\s+(2[0-3]|[0-1][0-9]):([0-5][0-9])(?::(60|[0-5][0-9]))?\s+([-\+][0-9]{2}[0-5][0-9]|(?:UT|GMT|(?:E|C|M|P)(?:ST|DT)|[A-IK-Z]))(\s+|\(([^\(\)]+|\\\(|\\\))*\))*$/
您的时区规范不完整。例如,我的时区是EET,这不包括在内。我会出去接受任何三个或四个字母,而不是试图构建一个完整的列表。 – tripleee 2012-02-19 21:07:12
@tripleee所以为此,我需要将'(?:ST | DT)'更改为'(?:ST | ET | DT)' – MrJ 2012-02-20 08:32:48
就像我写的那样,这很可能还不完全。我的回忆是,即使最后一封信是T,也不能依赖,但是我调查了这封信很长一段时间。由ITYM'[DES] T',但我会重复,我不认为这就足够了。另请参阅http://en.wikipedia.org/wiki/Lists_of_time_zones – tripleee 2012-02-20 13:40:20