验证日期

时间:2010-02-16 08:07:51

标签: javascript datetime

我有一个Web应用程序,在此我必须验证格式的一个日期字段,如mm / dd / yyyy。我在网上搜索但我没有得到合适的。请通过提供新功能或更正我的代码来帮助我。我的代码如下所示..我在onblur事件中调用了这个JS函数..

function isValidDate() {

var re = new RegExp('^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)dd$');

if (form1.txtDateOfOccurance.value != '' && !form1.txtDateOfOccurance.value.match(re)) {
    alert("Invalid date format: " + form1.txtDateOfOccurance.value);
    form1.txtDateOfOccurance.value = "";
    form1.txtDateOfOccurance.focus();
    isEnable();
    return false;
}

}

提前致谢..

6 个答案:

答案 0 :(得分:2)

在Google搜索“javascript日期验证”时,请查看http://www.smartwebby.com/DHTML/date_validation.asp,首次搜索结果。

答案 1 :(得分:1)

这是你想要的正则表达式。


var re = /^(0[1-9]|1[0-2])\/(0[1-9]|[1-3]\d)\/((19|20)\d\d)$/

虽然你可能会更好,因为inkedmn建议通过解析输入进行验证,因为MM / dd / yyyy是通过Date.parse识别的日期格式。

答案 2 :(得分:0)

我只是尝试将字符串解析为Date对象并检查结果(假设您只需要知道它是否是有效日期):

var myDate = Date.parse(form1.txtDateOfOccurance.value);
if(isNaN(myDate)){ 
    // it's not a real date
}

答案 3 :(得分:0)

function IsValidDate(str) {
    var str2=""; 
    var date = new Date(str); 
    str2 = (date.getMonth()+1) + "/" 
               + date.getDay() + "/" 
               + (date.getYear()+1900);

    return (str == str2);
}

答案 4 :(得分:0)

您可以使用:

function checkdate(input){
var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
var returnval=false;
if (!validformat.test(input.value))
alert("Invalid Date Format. Please correct and submit again.");
else{ //Detailed check for valid date ranges
var monthfield=input.value.split("/")[0];
var dayfield=input.value.split("/")[1];
var yearfield=input.value.split("/")[2];
var dayobj = new Date(yearfield, monthfield-1, dayfield);
if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
alert("Invalid Day, Month, or Year range detected. Please correct and submit again.");
else
returnval=true;
}
if (returnval==false) input.select()
return returnval;
}

答案 5 :(得分:0)

这是我的实施。它会检查有效范围和所有内容。

function validateDate(g) {
    var reg = new RegExp("^(([0-9]{2}|[0-9])/){2}[0-9]{4}$");
    // Checks if it fits the pattern of ##/##/#### regardless of number
    if (!reg.test(g)) return false;
    // Splits the date into month, day, and year using / as the delimiter
    var spl = g.split("/");
    // Check the month range
    if (parseInt(spl[0]) < 1 || parseInt(spl[0]) > 12) return false;
    // Check the day range
    if (parseInt(spl[1]) < 1 || parseInt(spl[1]) > 31) return false;
    // Check the year range.. sorry we're only spanning ten centuries!
    if (parseInt(spl[2]) < 1800 || parseInt(spl[2]) > 2800) return false;
    // Everything checks out if the code reached this point
    return true;
}