正则表达式匹配日期

时间:2011-07-11 11:34:33

标签: javascript regex

我正在尝试通过 regExp 验证以下日期格式,但我仍然没有获得ant工作解决方案 -

ex.-

OCT-12-2011
FEB-06-1995

我怎样才能使用regexp。

提前致谢!!

5 个答案:

答案 0 :(得分:4)

Date JS是谷歌的首次亮相。

Poverful yet simple!

  

全面,简单,隐秘,快速。 Datejs已通过所有审判,并准备罢工。 Datejs不只是解析字符串,它将它们完全切成两半。

来自其网站的示例代码:

Date.parse('today');
Date.parse('t + 5 d'); // today + 5 days
Date.parse('next thursday');
Date.parse('February 20th 1973');
Date.parse('Thu, 1 July 2004 22:30:00');

唯一的缺点是它修改了内置Date对象的原型。虽然这被认为是一种沮丧的做法,但我怀疑这些特殊的添加会影响你的应用。仍然有很多网站使用Prototype而没有任何问题。


编辑:通过RegExps来解析日期值。 特别注意在不同浏览器中考虑不同的date.toString()实现时要非常小心。这是new Date().toString()给我的内容:

  • IE9:"Mon Jul 11 14:50:45 UTC+0300 2011"
  • FF5:"Mon Jul 11 2011 14:51:08 GMT+0300 (FLE Daylight Time)"

如果从服务器获取这些字符串,并且您认为仅为日期添加库是一种开销,那么使用正则表达式就可以了。

答案 1 :(得分:2)

不要试图使用正则表达式严格验证它。使用以下内容检查格式:

[A-Z]{3}-[0-9]{2}-[0-9]{4}

然后,检查每个部分以查看该部分是否有效。

答案 2 :(得分:1)

......不确定你想要做多严格。

var months = [
        'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'
    ],
    regValidate = RegExp('^(?:' + months.join('|') + ')-[0-3][0-9]-\\d{4}$');

alert(regValidate.test('OCT-12-2011'));

答案 3 :(得分:0)

根据您的要求,可以执行以下操作:

^[A-Z]{3}-\d{2}-\d{4}$

或者更详细一点:

^(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-(0[1-9]|[12]\d|3[01])-[12]\d{3}$

或介于两者之间的任何东西:)(您甚至可以在年份部分进一步详细说明。)

答案 4 :(得分:0)

如果您想使用单个正则表达式执行此操作,则可以使用以下内容:

/^(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-([012]\d|3[01])-[12]\d{3}$/

这与JAN-01-1000之前或DEC-31-2999之后的日期不符。

注意:不要忘记检查FEB-30-2011等无效的二月日期