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-]/)
?@例外这将日期拆分为年、月和日。再次加入他们会有额外的开销