Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .match在尝试匹配正确且具有匹配项的正则表达式时返回null_Javascript_Regex_Match - Fatal编程技术网

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

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(

我一直在试图弄清楚为什么我的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(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点”的角色一样。这不是一个奇怪的行为。这是匹配数组。我建议你读这本书,尤其是这本书。记住:你匹配的不是你捕获的!