在一个字符串中获取最后一个数字(JavaScript)

7

var str = "7-Dec-1985" var str = "12-Jan-1703" var str = "18-Feb-1999"

如何从字符串中提取年份?我尝试了许多不同的正则表达式,但没有一个有效。

我本以为 re = new RegExp(/(\d+)\D*\z/); 能够生效,但很遗憾它没有。

如果您有任何建议,请告诉我,非常感谢!


请注意,re = new RegExp(/(\d+)\D*\z/); 实际上创建了两个正则表达式对象,第一个是 /(\d+)\D*\z/,然后将其传递给 RegExp 构造函数。通常只有在需要动态构建模式并将其作为字符串传递给构造函数时,才会使用 new RegExp。在所有其他情况下,re = /(\d+)\D*\z/; 完全可以胜任。 - Yoshi
1
这里不需要正则表达式。RegExp通常代价高昂,应谨慎使用。 - emyller
3个回答

19

这应该可以解决问题。

var year = str.match(/\d+$/)[0];

1
FYI,如果未找到任何匹配项,则 str.match 返回 null。 - fionbio

16

因为你所有的 str(s) 都使用 - 作为分隔符,所以这将对你起作用:

var str = "7-Dec-1985",
    arr = str.split('-'),
    year = arr[2];

console.log(year);

4
如果可以使用split,就不要使用正则表达式。 - Alex Wayne
非常感谢,这个完美地解决了问题。不过,原来在年份后面还有一些信息。“7-Dec-1985 12:00 AM”我能轻松地从字符串中删除时间吗? - Chris
2
1985年12月7日 - Yoshi
将结果简单地解析为整数就解决了这个问题。再次祝福你! - Chris

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接