正则表达式:从字符串中提取日期

时间:2009-10-30 13:36:58

标签: javascript regex

希望这不会太难,但我对正则表达式并不太熟练。我有一个包含两个日期的字符串,并希望使用JAVASCRIPT将两个日期提取到数组或其他内容中。

这是我的字符串:“我可以在2009年10月28日星期四到2009年11月7日星期六”

我希望数组为: arr [0] =“2009年10月28日星期四” arr [1] =“星期六,2009年11月7日”

这甚至可以吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分: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*$/, '');
}

答案 1 :(得分: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);

但是,如果有人刚刚打字:“2009年10月28日”。

答案 2 :(得分:0)

“(星期日|星期一|星期二|等),(1月| 2月|等)[1-3]?[0-9],[0-9] [0-9] [0-9] [0 -9]“,也许吧?对于Javascript,语法可能不完全正确,但这应该可以解决这个问题。它有可能出现误报(1月39日),但试图在正则表达式中考虑复杂的日历规则是一个错误。