2009-10-30 2 views
0

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

Вот моя строка: "Я доступен Четверг, 28 октября 2009 по субботу, 7 ноября 2009 года"

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

Это возможно?

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

ответ

2

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

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

он мог бы пойти еще проще: даты [0] = «Четверг, 28 октября 2009 г.»; даты [1] = суббота, 7 ноября 2009 г. », будет делать трюк. Но, по-видимому, он хочет иметь возможность извлекать даты из произвольной строки? –

+0

@Brian: в приведенном коде выдержки датируются строками формы'. .. доступно DATE1 - DATE2 "' где '...' - любой текст. –

+0

Да, строка будет меняться, но всегда будет включать тот же текст, только даты будут меняться. Я думаю, что решение crescentfresh будет работать! trailing text после последней даты, но я могу позаботиться об этом! Спасибо всем за вашу помощь! – vcuankit

0

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

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 года».

0

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

Смежные вопросы