在javascript中限制正则表达式中的日期和月份

时间:2013-04-12 05:15:22

标签: javascript jquery regex validation datetime

Java脚本功能

<script language="JavaScript">

function checkdate(date1){
var validformat=/^\d{2}\/\d{2}\/\d{4} \d{2}\:\d{2}\:\d{2}$/ 
if(!validformat.test(date1.value)){
alert("Invalid Date");
 document.form.date1.value="";
}

}

以上运作良好!但我想相应地限制

my format = mm/dd/YYYY hh:mm:ss

月份不应超过12且小于1且相同,日期不应超过31且小于1;

还有一件事!

02/02/2013 00:00:00 是有效日期,但 2/2/2013 00:00:00 显示为无效日期。

如何控制这两种情况?

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

var comp = value.split('/');
var d = parseInt(comp[0], 10);
var m = parseInt(comp[1], 10);
var y = parseInt(comp[2], 10);
var date = new Date(y, m - 1, d);
var validDateFormat = false;
if (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d) {
    validDateFormat = true;
}

如果validDateFormat为true,则日期有效。

答案 1 :(得分:1)

日期时间RegEx为 m / d / YYYY hh:mm:ss mm / dd / YYYY hh:mm:ss

/^(0?[1-9]|1[012])\/(0?[1-9]|[12]\d|3[01])\/[12]\d{3} ([01]\d|2[0-3])\:[0-5]\d\:[0-5]\d$/

解释演示:http://regex101.com/r/bS0gB6

答案 2 :(得分:0)

您可以查看this网站,该网站允许您为数字范围创建正则表达式。

话虽这么说,你应该使用你正在使用的语言(Javascript)提供的数值运算符来进行数值运算而不是正则表达式。

或者,您可以使用在JQuery中创建的DateTime Picker,如here所示。