为此字符串创建正则表达式:2005年12月3日

时间:2011-12-05 18:31:37

标签: javascript regex

我想创建一个正则表达式来检测亚马逊中图书的发布日期。我正在提取所有项目的数据,我想查找出版物的日期。所有这些都有这种结构:                             Month day, year.

月份仅由3个字符表示,当天可以有一个或两个数字(例如2011年12月5日或2011年12月22日)。这一年总有4个数字。

我如何在JavaScript中使用正则表达式来找到它?

提前致谢!!

5 个答案:

答案 0 :(得分:2)

此:

var myregexp = /([a-z]{3}) (\d{1,2}), (\d{4})/i;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
}

会让你前进。 match[1]有几个月,match[2]天和match[3]年。

我将省略解释正则表达式。我把它作为锻炼留给你。您应该访问臭名昭着的正则表达式教程 here

答案 1 :(得分:1)

/(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) \d{1,2}, \d{4}/i

答案 2 :(得分:1)

你没有说你假装用它做什么(提取一些东西,解析它的一部分,......)所以这里只是简单地“匹配”这些日期:

/\b\w{3} [1-3]?[0-9], \d{4}/

答案 3 :(得分:1)

var date = "Dec 22, 2011";
var match = date.match(/(\w+)\s(\d+),\s(\d+)/);
// match[1] == "Dec"
// match[2] == "22"
// match[3] == "2011"

请注意,如果格式发生变化,则可能会失败。

答案 4 :(得分:0)

试试这个:

^(Jan|Feb|Mar|Apr|May|Jun|Jul|Apr|Sep|Oct|Nov|Dec)\s{1}\d{1,2},\s{1}\d{4}$

OR

/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Apr|Sep|Oct|Nov|Dec)\s{1}\d{1,2},\s{1}\d{4}$/gim

此处:
g - 全球
i - IgnoreCase
m - 多行

您可以尝试通过 gskinner

验证RegExp