Javascript .match在尝试匹配正确且具有匹配项的正则表达式时返回null
我一直在试图弄清楚为什么我的JavaScript代码应该返回与正则表达式匹配的结果,却返回null 我基本上是在尝试使用regex从谷歌日历订阅源获取日期,我已经在regexpal.com上测试了regex及其工作性能 这是我的密码:Javascript .match在尝试匹配正确且具有匹配项的正则表达式时返回null,javascript,regex,match,Javascript,Regex,Match,我一直在试图弄清楚为什么我的JavaScript代码应该返回与正则表达式匹配的结果,却返回null 我基本上是在尝试使用regex从谷歌日历订阅源获取日期,我已经在regexpal.com上测试了regex及其工作性能 这是我的密码: var eventTextDate = String(value.summary); var patt1 = /([A-Z][a-z]{2} ){2}\d+, \d+ \d+:\d+.m/; var eventDate = eventTextDate.match(
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新手
我非常感谢您在这个问题上给我的任何帮助或提示。您可以使用
When:\s(.*)\s
作为正则表达式。然后,日期字符串将位于第一个捕获组中,可作为的第二个索引访问,例如:
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]);
如果您不需要到3pm
部分,则将正则表达式修改为
When:\s(.*)\sto
输入是什么,您希望生成什么输出?我从ajax响应(xml文档)中获取输入。我通过在ajax响应对象上执行$.each循环来获得value对象。每个值对象都包含一个标题、一些其他数据和一个摘要,其中包含日期。我想用正则表达式从摘要中提取日期。为什么这么复杂?当您只想提取日期时,为什么不在:\s(.*)\s时使用
?这将为您提供第一个捕获组中的整个日期字符串。感谢这个Basti M,它似乎可以工作。但是现在我用空格和逗号将匹配结果打印了两次。非常奇怪。而且我在第一次之后不需要这个角色,就像我不需要“到下午3点”的角色一样。这不是一个奇怪的行为。这是匹配数组。我建议你读这本书,尤其是这本书。记住:你匹配的不是你捕获的!