Kiểm tra tính hợp lệ của ngày tháng bằng pattern trong JavaScript. | How to validate a date with JavaScript?

Bài viết hôm nay giới thiệu một số mã kiểm tra tính hợp lệ của ngày tháng(check valid date) bằng pattern trong JavaScript.

Đầu tiên mình xin nói sơ về pattern, do mình hay sử dụng nó theo thói quen khi phát hiện ra cách dùng, sau khi đọc qua cái tài liệu liên quan mình vẫn còn hơi mơ hồ về khái niệm về nó nên có gì sai sót các bạn thông cảm.

Theo giới thiệu của Java thì pattern là một đại diện biên dịch của một biểu thức chính quy. Theo cách hiểu của mình nó sẽ là một biểu mẫu và được nhà lập trình thiết kế để tạo một một chuẩn mực nhất định cho dữ liệu đầu vào. 

Hiểu đơn giản bạn có các giá trị A, B, C, D, AB và bạn có một bảng mẫu qui định là chỉ cho phép giá trị có từ A trong đó mới tính là hợp lệ, như vậy khi các giá trị này thông qua biểu mẫu thì chỉ có A và AB la hợp lệ. Bảng mẫu ở đây ta có thể hiểu là pattern.

Dưới đây mình xin giới thiệu qua một số hàm(function) dùng để kiểm tra tính hợp lệ của ngày tháng được phân loại theo một số chuẩn định dạng ngày tháng(date format).


Validate Date With Format DDMMYYYY:

function checkValidDate(strDate)
{
    var regex = /^(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])02((19|[2-9]\d)\d{2}))|(2902((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/;
    if(!(regex.test(strDate)))
    {
        return "Ngày không hợp lệ!";
    }
    return "Ngày hợp lệ.";
}


Validate Date With Format YYYYMMDD:

function checkValidDate(strDate)
{
    var regex = /^([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)$/;
    if(!(regex.test(strDate)))
    {
        return "Ngày không hợp lệ!";
    }
    return "Ngày hợp lệ.";
}

 
Validate Date With Format DD/MM/YYYY:

function checkValidDate(strDate)
{
    var regex = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((1[6-9]|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/;
    if(!(regex.test(strDate)))
    {
        return "Ngày không hợp lệ!";
    }
    return "Ngày hợp lệ.";
}


Validate Date With Format MM/DD/YYYY:

function checkValidDate(strDate)
{
    var regex = /^((((0[13578])|(1[02]))[\/]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\/]?(([0-2][0-9])|(30)))|(02[\/]?[0-2][0-9]))[\/]?\d{4}$/;
    if(!(regex.test(strDate)))
    {
        return "Ngày không hợp lệ!";
    }
    return "Ngày hợp lệ.";
}



Write: +Bui Ngoc Son







No comments:

Post a Comment