Регулярные выражения: извлечение даты из строки - PullRequest
0 голосов
/ 30 октября 2009

Надеюсь, это не будет слишком сложно, но я не слишком разбираюсь в регулярных выражениях. У меня есть строка, которая содержит две даты и хотел бы извлечь две даты в массив или что-то с помощью JAVASCRIPT.

Вот моя строка: «Я доступен с четверга, 28 октября 2009 г. по субботу, 7 ноября 2009 г.»

Я бы хотел, чтобы массив был: arr [0] = "Четверг, 28 октября 2009 г." arr [1] = "суббота, 7 ноября 2009 г."

Это вообще возможно сделать?

Спасибо за вашу помощь!

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

Вам не нужно регулярное выражение для (в основном) такой статической строки. Как насчет:

var s = "I am available Thursday, October 28, 2009 through Saturday, November 7, 2009";
var dates = s.split('available')[1].split('through');
trim(dates[0]); // "Thursday, October 28, 2009"
trim(dates[1]); // "Saturday, November 7, 2009"

trim() полоски, идущие + пробелы после пробела:

function trim(str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
0 голосов
/ 30 октября 2009

"(воскресенье | понедельник | вторник | и т. Д.), (Январь | февраль | и т. Д.) [1-3]? [0-9], [0-9] [0-9] [0-9] [0 -9] ", может быть? Синтаксис может быть не точным для Javascript, но это должно объяснить идею. Это может привести к ложным срабатываниям (39 января), но попытка учесть сложные правила календаря в регулярном выражении - ошибка.

0 голосов
/ 30 октября 2009

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

var s="I am available Thursday, October 28, 2009 through Saturday, November 7, 2009";
arr=s.match(/(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)[^\d]*\d*, \d*/g);
alert(arr);

Но нет, если кто-то просто напечатал: «28 октября 2009 года».

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