我正在尝试通过 regExp 验证以下日期格式,但我仍然没有获得ant工作解决方案 -
ex.-
OCT-12-2011
FEB-06-1995
我怎样才能使用regexp。
提前致谢!!
答案 0 :(得分:4)
Date JS是谷歌的首次亮相。
全面,简单,隐秘,快速。 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()
给我的内容:
"Mon Jul 11 14:50:45 UTC+0300 2011"
"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等无效的二月日期