我有一个针对我问题的解决方案,但是我想在regex方面做得更好,尤其是在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个结果,而不是让它不起作用(因为我可以忽略数组中的第一个索引),但是我可以更好地使用regex。
最佳答案
每当您在正则表达式中带有括号时,也会同时返回与那些括号匹配的值。time[0]
与整个表达式匹配time[1]
是匹配([\ d] {4})的年份,即年份time[2]
是匹配第一个([\ d] {2})(即月份)的内容time[3]
是匹配第二个([\ d] {2})的日期,即日期
您无法更改此行为以删除time[0]
,并且您实际上并不想这样做(由于基础代码已经在生成它,因此删除它不会带来任何性能上的好处)。
如果您不希望从带括号的表达式中取回值,则可以使用(?:expression)
使其不匹配。
关于javascript - 正则表达式仅获取日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1200700/