只返回匹配的字符串部分

时间:2017-05-25 11:20:26

标签: javascript regex

我有字符串

var v = "09/30/2016 12:00am - 2:00am";

我只需要获取此字符串的日期部分:"09/30/2016"

为此,我有正则表达式

var dateFormatRegex = /^(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d\d$/ig;

但如果只有日期字符串,它只匹配字符串。

我应该在正则表达式中添加什么来从字符串09/30/2016获取09/30/2016 12:00am - 2:00am

1 个答案:

答案 0 :(得分:1)

你快到了!

你唯一的错误就是你在正则表达式的末尾加了一个$,这使得它与你发布的那种字符串不匹配。

使用String.match会返回一组匹配的组 - 在这种情况下,您只有一组,然后可以使用matches[0]返回

var dateFormatRegex = /^(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d\d/ig;
// removed $ as in the target strings there is still stuff after the date

var v = "09/30/2016 12:00am - 2:00am";
var matches = v.match(dateFormatRegex);
var date = matches[0]; // === 09/30/2016"