我一直在努力弄清楚为什么我的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的新手。
我非常感谢有关此问题的任何帮助或提示。
答案 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