.match在尝试匹配正确且具有匹配项的正则表达式时返回null

时间:2014-01-30 10:33:26

标签: javascript regex match

我一直在努力弄清楚为什么我的JavaScript代码应该返回正则表达式的匹配项。

我基本上是尝试使用正则表达式从谷歌日历源码获取日期,我已经在regexpal.com中测试了正则表达式及其工作正常。

这是我的代码:

var eventTextDate = String(value.summary);
var patt1 = /([A-Z][a-z]{2} ){2}\d+, \d+ \d+:\d+.m/;
var eventDate = eventTextDate.match(patt1);

value.summary等于以下内容:

When: Tue Jan 21, 2014 1:30pm to 3pm 
GMT<br />

注意换行符和正斜杠。我认为它们可能与它有关,所以我尝试将字符串子串(5,30)去除斜线和换行符,但这似乎没有帮助。

另外,如果我将正则表达式改为类似/.../,它会返回三个第一个字母。所以我知道我的代码的基本机制和结构是有效的。

我想我的正则表达式有一些错误(即使它适用于regexpal.com)因为我是regex的新手。

我非常感谢有关此问题的任何帮助或提示。

1 个答案:

答案 0 :(得分:1)

您可以使用

When:\s(.*)\s

作为你的正则表达。
然后,日期字符串将位于frist捕获组中,可作为match-array的第二个索引访问,例如:

var re = /When:\s(.*)\s/; 
var str = 'When: Tue Jan 21, 2014 1:30pm to 3pm\nGMT<br />';
var m = str.match(re);

alert(m[1]);

如果您不需要to 3pm部分,请将正则表达式修改为

When:\s(.*)\sto