正则表达式来验证以JavaScript
我想要验证它可以是在短日期格式或长日期格式日期为mm/dd/yyyy格式短和长日期。 例如:用于某些有效日期。正则表达式来验证以JavaScript
12/05/2010,12/05/10,10年12月5日,2010年12月5日
var reLong = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
var reShort = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/;
var valid = (reLong.test(entry)) || (reShort.test(entry));
if(valid)
{
return true;
}
else
{
return false;
}
,但是当我试图给一个无效的日期为12这个电流正则表达式失败/ 05/20-0
发生这种情况是因为12/05/20
这是您输入的子字符串12/05/20-0
是有效的日期。
为了避免串匹配,你可以使用锚为:
/^\d{1,2}[\/-]\d{1,2}[\/-]\d{4}$/
但同样上述允许的日期,如00/00/0000
和29/02/NON_LEAP_YEAR
这是无效的。
所以它能够更好地使用库函数来完成此验证。
我能找到一个这样的库:datajs
这里有一个稍微更强大的正则表达式将试图过滤掉一些不好的日期:
^(1[012]|0[1-9])([\/\-])(0[1-9]|[12]\d|3[01])\2((?:19|20)?\d{2})$
输入(上rubular可见)
01/01/2001 # valid
10-10-10 # valid
09/09/1998 # valid
00-00-0000 # invalid
15-15-2000 # invalid
比赛日期:01至31,月份匹配:01-12以及年份匹配1900-2099。这也将迫使你进入一个一致的分离器(即:mm/dd/yyyy
和mm-dd-yyyy
工作,但mm-dd/yyyy
没有)。
这仍然会采取一些不好的日期(如2000年2月30日),但为了实用的目的应该是足够了。这也将分别在捕获组1,2和3中放置月,日和年。
这会验证短期和长期日期吗? – nimi 2010-09-30 02:50:34
@Nimesh是的,它会的 – NullUserException 2010-09-30 02:51:52
我相信这将验证'01/01-2001' ... – 2010-09-30 02:55:29
codeddict的权利。顺便说一句,你可能能够在2正则表达式结合togeter成一个:^ \ d {1,2} [\/- ] \ d {1,2} [\/- ](\ d {2} | \ d {4 })$ ...并且mm的第一个数字可以进一步优化 - 取决于你想要做什么。 – DashK 2010-09-30 02:46:39