Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 仅获取日期的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 仅获取日期的正则表达式

Javascript 仅获取日期的正则表达式,javascript,regex,Javascript,Regex,对于我的问题,我有一个解决方案,但我正努力在正则表达式方面做得更好,尤其是在javascript方面。我只是想把这篇文章带到社区,看看我是否可以用更好的方式来写 所以,我得到一个来自.net的datetime字符串,我需要从中提取日期 目前我拥有的是: var time = "2009-07-05T00:00:00.0000000-05:00".match(/(^\d{4}).(\d{2}).(\d{2})/i); 正如我所说,这是可行的,但我希望它更直接,只抓取数组中的年、月、日。我得到的是

对于我的问题,我有一个解决方案,但我正努力在正则表达式方面做得更好,尤其是在javascript方面。我只是想把这篇文章带到社区,看看我是否可以用更好的方式来写

所以,我得到一个来自.net的datetime字符串,我需要从中提取日期

目前我拥有的是:

var time = "2009-07-05T00:00:00.0000000-05:00".match(/(^\d{4}).(\d{2}).(\d{2})/i);
正如我所说,这是可行的,但我希望它更直接,只抓取数组中的年、月、日。我得到的是4个结果,第一个是YYYY-MM-DD,YYYY,MM,DD


基本上,我只希望返回3个结果,而不是说这不起作用(因为我可以忽略数组中的第一个索引),而是为了更好地学习使用正则表达式。

只要正则表达式中有括号,匹配这些括号的值也将返回

  • time[0]
    与整个表达式匹配
  • time[1]
    是匹配的([\d]{4}),即年份
  • 时间[2]
    与第一个([\d]{2})匹配,即月份
  • 时间[3]
    是与第二个([\d]{2})匹配的时间,即日期
您不能将此行为更改为删除
time[0]
,您也不想这样做(因为底层代码已经在生成它,删除它不会带来任何性能好处)


如果您不关心从带括号的表达式中获取值,可以使用
(?:expression)
使其不匹配。

我不认为您可以这样做,但您可以这样做

var myregexp = /(^\d{4})-(\d{2})-(\d{2})/g;
var match = myregexp.exec(subject);
while (match != null) {
    for (var i = 1; i < match.length; i++) {
        // matched text: match[i]
    }
    match = myregexp.exec(subject);
}
var myregexp=/(^\d{4})-(d{2})-(d{2})/g;
var match=myregexp.exec(主题);
while(匹配!=null){
对于(变量i=1;i

然后从索引1开始循环。数组中的第一项是匹配,然后各组是该匹配的子组

正如我所说,我并不十分关心它,因为我只是将其作为一个学习案例,只是想看看它是否可行(理论问题而不是实际问题)。