从Javascript/jQuery中的URL字符串中检索日期
Retrieving Date from a URL string in Javascript/jQuery
我有一个WordPress网站,正在使用AJAX更新存档,而不是重新加载页面(用非常基本的术语来说)。
所以我可以通过:
http://mysite.com/events/2012/10/17
http://mysite.com/events/2012/10
http://mysite.com/events/2012
我正在寻找一个JS/jQuery正则表达式方法,可以检索其中的任何一个。到目前为止,我有以下内容:
var linkUrl = 'http://mysite.com/events/2012/10';
var linkDate = linkUrl.match(/'d{4}('/'d{2})+/);
console.log( linkDate ); // output - ["2012/10", "/10", index: 8, input: "/events/2012/10"]
它似乎找到了2场比赛,第二场不是我想要的。我相信这在我的正则表达式中是一件简单的事情。
我会尝试这个正则表达式/('d{4})(?:'/('d{2}))?(?:'/('d{2}))?$/
:
'http://mysite.com/events/2012'.match(/('d{4})(?:'/('d{2}))?(?:'/('d{2}))?$/)
// => ["2012", "2012", undefined, undefined]
'http://mysite.com/events/2012/03'.match(/('d{4})(?:'/('d{2}))?(?:'/('d{2}))?$/)
// => ["2012/03", "2012", "03", undefined]
'http://mysite.com/events/2012/03/21'.match(/('d{4})(?:'/('d{2}))?(?:'/('d{2}))?$/)
// => ["2012/03/21", "2012", "03", "21"]
试试这个。
(?<=/)[0-9]{4}(/[0-9]{1,2})?(/[0-9]{1,2})?
所以我在我可爱的O’Reilly正则表达式书中发现了这个解决方案。
在再次查看我的regex之后,我意识到month[和day]表达式被方括号包围,这显然意味着捕获子模式。解决方案是这样的。
var linkUrl = "/events/2012/10/25";
var linkDate = linkUrl.match(/'d{4}(?:'/'d{2})*/);
// output - ["2012/10/25", index: 8, input: "/events/2012/10/25"]
我在括号中添加了?:
,这告诉match
不要捕获子字符串。现在我分别接收2012/10/17
或2012/10
,具体取决于URL。
还要注意,由于正确地排除了子模式,返回了单个值。
相关文章:
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 从Meteor中的数组中检索字符串
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- 解析字符串包含'"'从mysql检索到JSON
- 从字符串中检索自定义参数的值
- 如何检索其属性为给定参数的子字符串的所有文档
- 字符串比较显示从flash[:alert]检索到的字符串上的错误
- 将选择器检索为插件中的字符串
- JQuery:参数:硬编码字符串与 ajax 检索到的字符串
- 在解析中检索字符串
- 正则表达式:检索字符串第一次出现之前的行
- 从 json 字符串中检索数组值
- 如何从 JSON 字符串中检索多个属性值
- 分析字符串以检索参数
- 分析从数据库中作为字符串检索的二维数组
- 用字符串检索天数
- 使用字符串检索对象的值
- jQuery:尝试通过对象的ID字符串检索对象
- 将整个json数组作为字符串检索
- 如何从多维json字符串检索数据