Javascript中的正则表达式,用于测试各种日期
我需要一个javascript正则表达式,可以测试以下格式的日期:Javascript中的正则表达式,用于测试各种日期,javascript,regex,Javascript,Regex,我需要一个javascript正则表达式,可以测试以下格式的日期: yyyy-MM-dd(示例:2014-12-31) 年月日(示例:2014年12月31日) 年月日(示例:31.12.14) ddMMyyyy(示例:12312014) ddMMyy(示例:123114) 年月日(示例:12.6.14) 年月日(示例:2014年6月12日) 对不起,我对正则表达式真的很在行。对于职业选手来说,这可能是轻而易举的事。非常感谢。您的第一个模式与其他模式太不相同,无法进行有意义的合并。所以:\d{
- yyyy-MM-dd(示例:2014-12-31)
- 年月日(示例:2014年12月31日)
- 年月日(示例:31.12.14)
- ddMMyyyy(示例:12312014)
- ddMMyy(示例:123114)
- 年月日(示例:12.6.14)
- 年月日(示例:2014年6月12日)
对不起,我对正则表达式真的很在行。对于职业选手来说,这可能是轻而易举的事。非常感谢。您的第一个模式与其他模式太不相同,无法进行有意义的合并。所以:
\d{4}-\d\d-\d\d
对于其他的,您允许使用可选的
作为分隔符,以及两位数或四位数的年份。所以您有:\d\d(\.?)\d\d?\1\d\d(?:\d\d)?
上面的\1
基本上是重复(\.?)
的结果-即,如果之前有点,则重复一个点;如果之前没有点,则重复一个点
结果:
/^(?:\d{4}-\d\d-\d\d|\d\d(\.?)\d\d?\1\d\d(?:\d\d)?)$/
你看过了吗?你不想用正则表达式来处理这样的事情,因为上面提到的99.33.8888不是日期
这个聪明的功能可以解决您的问题:
var isDate_ = function(input) {
var status = false;
if (!input || input.length <= 0) {
status = false;
} else {
var result = new Date(input);
if (result == 'Invalid Date') {
status = false;
} else {
status = true;
}
}
return status;
}
var isDate=函数(输入){
var状态=假;
如果(!input | | input.length其中一个与其他的不一样…即,第一个与其他的格式完全不同,使得单个正则表达式难以使用。您不能(也不应该)使用正则表达式来验证日期。99.33.8888
是有效日期吗?最后两个示例与其签名不匹配。(它们是MMddyyyy)ddMMyyyy(示例:12312014)
不正确:“31”是天,“12”是月,所以应该是MMddyyyy
或者应该重写示例。ddMMyy(示例:123114)
不正确:原因相同。如果您与“示例”一致格式设置,“12”始终表示月份,而不是日期,31
或6
应为日期。能否修改帖子以反映正确的格式(或正确的示例)?那么,你是说你的结果只能用于最后4个示例,而不能用于第一个示例?我认为正则表达式允许某种类型的ORing。@AndroidDev我将问题分成两个问题,然后将它们与
-它就在那里;)@AndroidDev忘记将最后两位数设为可选,因此它不接受两位数的年份。请立即尝试。我在末尾又添加了两个示例。请您也包括这些示例:-)现在支持一位数的月份。解决方案必须允许我指定的格式。请记住以某种方式验证正则表达式。