RFC 2822 Date Regex - PullRequest
       9

RFC 2822 Date Regex

2 голосов
/ 19 февраля 2012

Какое регулярное выражение соответствует дате 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+|\(([^\(\)]+|\\\(|\\\))*\))*$/

1 Ответ

0 голосов
/ 19 февраля 2012

Как отметил @tripleee, дата RFC2822 всегда будет английской. Но если вы анализируете даты из источника, который не строго следует RFC2822 и который может использовать другой язык, вам придется определить набор языков, которые могут использоваться, и создать одно регулярное выражение, которое будет соответствовать любому месяцу / дню названия недели с любого из этих языков. После этого вы можете использовать хеш для преобразования захваченных названий месяцев / дней недели во внутреннее представление, которое вы хотите использовать.

...