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

Javascript 正则表达式:从字符串中提取日期,javascript,regex,Javascript,Regex,希望这不会太难,但我对正则表达式不太熟练。我有一个包含两个日期的字符串,希望使用JAVASCRIPT将这两个日期提取到一个数组或其他东西中 这是我的字串:“我从2009年10月28日星期四到2009年11月7日星期六都有空” 我希望阵列为: arr[0]=“2009年10月28日,星期四” arr[1]=“2009年11月7日,星期六” 这可能吗 谢谢你的帮助 这样的静态字符串不需要正则表达式。那么: var s = "I am available Thursday, October 28, 2

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

这是我的字串:“我从2009年10月28日星期四到2009年11月7日星期六都有空”

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

这可能吗


谢谢你的帮助

这样的静态字符串不需要正则表达式。那么:

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"
带前导+尾随空格:

function trim(str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

只有使用正则表达式,您才能真正使其适用于非常特定的日期格式。因此,这将符合您的确切措辞:

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日”。

(星期日、星期一、星期二等),(一月、二月等)[1-3]?[0-9],[0-9][0-9][0-9][0-9][0-9]”,也许?对于Javascript来说,语法可能并不精确,但这应该能让人明白这一点。它可能会出现误报(1月39日),但试图在regexp中解释复杂的日历规则是错误的

他可以说得更简单:日期[0]=“2009年10月28日,星期四”;dates[1]=2009年11月7日星期六”可以。但他可能想从任意字符串中提取日期?@Brian:显示的代码从形式为
”的字符串中提取日期。。。可用日期1到日期2“
其中,
是任何文本。是的,字符串会更改,但始终包含相同的文本,只是日期会更改。我认为crescentfresh的解决方案会起作用!在最后一个日期之后还有一些后续文本,但我可以处理!谢谢大家的帮助!strip()将处理所有空白,并内置。@mlissner:您考虑的是
.trim()
,在旧浏览器上不可用。