JavaScript Regex - 从字符串中获取第N个数字

时间:2014-11-28 18:43:13

标签: javascript jquery regex

我有一个以这种格式输出的日期字符串:2014-11-28 00:00:00

我获得JS匹配和正则表达式获得前四位数的年份:match(/^[0-9]{4}/)

所以现在我也想要了解月份和日期。如果它们低于10,则前置0,所以我认为最简单的方法是拉出当月的第6和第7个字符以及当天的第8和第9个字符。

如何在jQuery / JavaScript中使用正则表达式执行此操作?

3 个答案:

答案 0 :(得分:3)

也许您可以针对问题尝试不同的方法而不是正则表达式?

Date对象似乎足以满足您的目的。

var d = new Date('2014-11-28 00:00:00');
d.getFullYear(); // returns 2014
d.getMonth(); // return 10
d.getDay(); // returns 28

如果你真的想使用正则表达式,这将捕获你想要的组:

var foo = '2014-11-28 00:00:00'.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);
foo[1]; // returns "2014"
foo[2]; // returns "11"
foo[3]; // returns "28"

详细了解regex capturing groups

答案 1 :(得分:1)

您可以使用match()split()完成此操作。

使用match()

var date = '2014-11-28 00:00:00',
    pattern = /^(\d{4})-(\d{1,2})-(\d{1,2})/
    dateElements = date.match(pattern),
    day = dateElements[3],
    month = dateElements[2],
    year = dateElements[1];
alert('Day = ' + day + ', Month = ' + month + ' & Year = ' + year);

或使用split()

var date = '2014-11-28 00:00:00',
    str = date.substring(0, date.length - 9),
    dateElements = str.split('-'),
    day = dateElements[2],
    month = dateElements[1],
    year = dateElements[0];
alert('Day = ' + day + ', Month = ' + month + ' & Year = ' + year);

答案 2 :(得分:1)

此正则表达式适用于您的目的:

/^(\d{4})-(\d{1,2})-(\d{1,2})/