数据:
"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个字母和后面的一个空格...捕获日期格式...不要采取任何措施事后" 的
答案 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)
您可以使用split
,splice
和join
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