如何使用Regex获取此处的日期?

时间:2012-09-30 19:54:09

标签: javascript regex

数据:

"Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)"

在正则表达式中,我试图获得" 2012年9月30日"没有文字/Sep\s\d\d\s2012/

我想要大肆宣传" Sun"和" 12点37分24秒...."所以只有" 2012年9月30日"被捕获。

我将如何在JavaScript REGEX中执行此操作?

更新:

我做了一个,但它并不那么优雅:\w{3}\s\d{1,2}\s2\d\d\d

是否有REGEX模式可以说,"取出前3个字母和后面的一个空格...捕获日期格式...不要采取任何措施事后"

5 个答案:

答案 0 :(得分:1)

对我而言,日期和月份似乎总是3个字符长,因此搜索到的字符串始终具有相同的长度并且始终位于相同的位置。

"Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)".slice(4, 15)

答案 1 :(得分:1)

别。我可以看到你几乎肯定会使用一些JavaScript日期到字符串转换(可能只是(new Date).toString())并且这是依赖于语言环境的。对于脚本的许多用户来说会有所不同。

相反,日期应该已经采用特定格式。例如在PHP中,您可以date("Y-m-d H:i:s")然后按原样使用split(/[- :]/)。或者如果您已经有Date对象,只需使用get*()函数。

如果我错了,你的格式实际上是每次都不管语言环境,那么我猜这样的事情会这样:/[A-Z][a-z]{2} \d{2} \d{4}/

答案 2 :(得分:1)

您可以使用splitsplicejoin

var date = "Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)" ;
var desiredResult = date.split(" ").splice(1, 3).join(" ");

答案 3 :(得分:0)

您可以使用substring

var s = "Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)";
s = s.substring(4, 15); // "Sep 30 2012"

如果你真的坚持使用正则表达式,你可以使用:

s = s.match(/\w{3}\s(\w{3}\s\d{1,2}\s2\d{3})/)[1]; // "Sep 30 2012"

但老实说,日期并不是真的要用正则表达式解析,或者substring就此而言,但是使用真实Date parsers

答案 4 :(得分:0)

回答“如何在JS中说三个字母和一个空格”的问题:

> "abc ".match("[A-Za-z]{3} ")
["abc "]
> "ab3 ".match("[A-Za-z]{3} ")
null
相关问题