【发布时间】:2010-12-18 14:19:41
【问题描述】:
我对正则表达式了解不多,但是我有一个字符串(url),我想从中提取日期:
var myurl = "https://example.com/display/~test/2010/07/06/Day+2.+Test+Page";
我想从中提取2010/07/06,另外我想将其格式化为6th of July, 2010。
【问题讨论】:
标签: javascript regex
我对正则表达式了解不多,但是我有一个字符串(url),我想从中提取日期:
var myurl = "https://example.com/display/~test/2010/07/06/Day+2.+Test+Page";
我想从中提取2010/07/06,另外我想将其格式化为6th of July, 2010。
【问题讨论】:
标签: javascript regex
不需要正则表达式。 split() 和 slice() 的组合也可以:
var myurl = "https://example.com/display/~test/2010/07/06/Day+2.+Test+Page";
var parts = myurl.split("/"); // ["https:", "", "example.com", "display", "~test", "2010", "07", "06", "Day+2.+Test+Page"]
var ymd = myurl.slice(5,8); // ["2010", "07", "06"]
var date = new Date(ymd); // Tue Jul 06 2010 00:00:00 GMT+0200 (W. Europe Daylight Time)
有几个全面的日期格式库,我建议你使用其中之一,不要尝试自己滚动。
【讨论】:
Date() 构造函数并不适用于所有浏览器。在 Internet Explorer 中,您必须使用 new Date(ymd[0], ymd[1] - 1, ymd[2]);。
根据 URL 的变化方式,您可以使用以下内容:
\/\d{4}\/\d{2}\/\d{2}\/
上面将提取/2010/07/06/(两个斜杠只是为了更安全 - 您可以删除标题和尾随\/ 以获得2010/07/06,但如果URL 包含可能匹配的其他部分,您可能会遇到问题) .
在此处查看在线正则表达式示例:
这是 jsfiddle:
要对其进行格式化,请查看例如这里:
类似的东西(注意你需要上面的函数):
var dt = new Date(2010, 6, 6);
dateFormat(dt, "dS of mmmm, yyyy");
// 6th of June, 2010
【讨论】:
p[1] 写 parseInt(p[1]) 等等)。
var myurl = "https://example.com/display/~test/2010/07/06/Day+2.+Test+Page";
var re = /(\d{4})\/(\d{2})\/(\d{2})/
var months = ["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var parts = myurl.match(re)
var year = parseInt(parts[1]);
var month = parseInt(parts[2],10);
var day = parseInt(parts[3],10);
alert( months[month] + " " + day + ", " + year );
【讨论】: