Regex для Google Calendar API вывод даты - PullRequest
3 голосов
/ 19 июля 2011

У меня есть строка, содержащая дату, которая имеет много возможностей форматирования.Мое регулярное выражение, чтобы соответствовать этому, становится смешным и длинным.Я надеюсь выучить более краткое выражение.Вот различные форматы.Я хотел бы получить каждую дату в качестве собственного совпадения:

Sat Jul 16, 2011
Sat Jul 16, 2011 6pm to 8pm
Sat Jul 16, 2011 6pm to 8:30pm
Sat Jul 16, 2011 6:30pm to 8pm
Sat Jul 16, 2011 6:30pm to 8:30pm

Sat Jul 16, 2011 to Sun Jul 17, 2011
Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8pm
Sat Jul 16, 2011 6:30pm to Sun Jul 17, 2011 8pm
Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8:30pm
Sat Jul 16, 2011 6:30pm to Sun Jul 17, 2011 8:30pm

Прежде чем я пришел сюда, чтобы спросить, я дошел до этой точки:

([A-Z]{1}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{1,2}, [0-4]{4} [0-9]{1,2}[ap]{1}m)( to ([A-Z]{1}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{1,2}, [0-4]{4} [0-9]{1,2}[ap]{1}m))?

Что бы вернутьпервая дата и вторая, если она существует, но только для этого формата: Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8pm.Это стало абсурдом.

Редактировать:

Кто-то предложил Я проверяю часть даты «до» и запускаю регулярное выражение с каждой стороны, вместо того, чтобы пытатьсяучитывать все случаи сразу.Все еще ищу более краткое решение для каждой его стороны, но это очень поможет.

1 Ответ

2 голосов
/ 19 июля 2011

Разбейте дату на две половины, как предложено, и затем используйте date.js для анализа обеих половин. Тогда это Date.parse («Суббота, 16 июля 2011 г., 18:30»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...