Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 改进lookahead正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 改进lookahead正则表达式

Javascript 改进lookahead正则表达式,javascript,regex,Javascript,Regex,我有一个这样的日期字符串 '2015-09-24T03:45:19-0700 +0530' 我提取日期和时间如下 match(/[0-9]+:+[0-9]+:[0-9]+(?=.*?-)/) // returns 03:45:19 match(/[0-9]+-+[0-9]+-[0-9]+(?=.*?T)/) // returns 2015-09-24 有没有办法改进上述正则表达式 编辑: 当我尝试新日期('2015-09-24T03:45:19-0700+0530')时,它会显示无效日期,因

我有一个这样的日期字符串

'2015-09-24T03:45:19-0700 +0530'
我提取日期和时间如下

match(/[0-9]+:+[0-9]+:[0-9]+(?=.*?-)/) // returns 03:45:19
match(/[0-9]+-+[0-9]+-[0-9]+(?=.*?T)/) // returns 2015-09-24
有没有办法改进上述正则表达式

编辑:


当我尝试新日期('2015-09-24T03:45:19-0700+0530')时,它会显示无效日期,因为这是本地化日期。这就是我尝试Regex评估另一种方法的时候。现在我安顿下来,用
替换
,并使用
新日期。它工作正常。

您可以在空格上拆分,并使用
Date.parse()
获得所需的结果:

yourDate = new Date(Date.parse('2015-09-24T03:45:19-0700 +0530'.split(' ')[0]))
“T”
Date.parse()正确解释


然后,您可以对日期使用任何方法。

Regex在这里是一种过度使用。您可以使用
substr
split
(假设字符串的格式相同)

  • 从字符串中删除毫秒和时区
  • 将结果字符串按
    T
  • var str='2015-09-24T03:45:19-0700+0530';
    var arr=str.substr(0,str.lastIndexOf('-')).split('T');
    var日期=arr[0],
    时间=arr[1];
    document.getElementById('output').innerHTML='Date='+Date+'
    Time='+Time
    为什么事情这么复杂。你可以使用,它看起来很适合时间,除非里面只有一个数字,比如
    '2015-09-24T03:5:19-0700+0530'
    这个IMO怎么样?你不需要提前看<代码>\d{2}:\d{2}:\d{2}
    会找到你的时间。总之,momentJs有什么问题吗?请将您的回答作为答案发布,这样我就可以接受最佳解决方案。它错过了时间,请查看我的问题编辑好的,工作是否:)可能是我们可以使用此
    '2015-09-24T03:45:19-0700+0530'进行改进。拆分(/[T-]/)
    ?@例外这将日期拆分为年、月和日。再次加入他们会有额外的开销