Javascript 仅获取日期的正则表达式
对于我的问题,我有一个解决方案,但我正努力在正则表达式方面做得更好,尤其是在javascript方面。我只是想把这篇文章带到社区,看看我是否可以用更好的方式来写 所以,我得到一个来自.net的datetime字符串,我需要从中提取日期 目前我拥有的是: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); 正如我所说,这是可行的,但我希望它更直接,只抓取数组中的年、月、日。我得到的是
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]
是匹配的([\d]{4}),即年份time[1]
与第一个([\d]{2})匹配,即月份时间[2]
是与第二个([\d]{2})匹配的时间,即日期时间[3]
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开始循环。数组中的第一项是匹配,然后各组是该匹配的子组正如我所说,我并不十分关心它,因为我只是将其作为一个学习案例,只是想看看它是否可行(理论问题而不是实际问题)。