我有一个针对我问题的解决方案,但是我想在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/

10-16 20:57