正則表達式之時間驗證【匹配時間的正則表達式】

正則表達式驗證時間的匹配

var reg = 
/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)
(\T)
(([0-1]{1}[0-9]{1})|([2]{1}[0-4]{1}))
([:])
(([0-5]{1}[0-9]{1}|[6]{1}[0]{1}))
([:])
([0-5]{1}[0-9]{1}|[6]{1}[0]{1})$/

驗證格式:

2080-02-10T12:60:30

驗證demo:

<html>
<script>
function IsDate() {
             //輸入的日期
var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)(\T)(([0-1]{1}[0-9]{1})|([2]{1}[0-4]{1}))([:])(([0-5]{1}[0-9]{1}|[6]{1}[0]{1}))([:])([0-5]{1}[0-9]{1}|[6]{1}[0]{1})$/
            var str = document.getElementById("date").value;
            var arr = reg.test(str);
            if (str == "") {
                alert("請輸入日期");
            }

            else if(!arr){
                  alert("請輸入正確的日期格式,例:2080-02-10T12:60:30");
            }else{
                  alert("日期格式正確");
            }
}
</script>
<body>
    輸入您要驗證的日期:<input type="text" id="date" name="date" />
    <br />
    <br />
    <input type="button" id="btnValid" value="驗證日期格式" onclick="IsDate()"/>
</body>
</html>

測試用例

2012-04-20T12:12:12 √ 2012-12-20T12:12:12 √ 2012-13-20T12:12:12 ×  (判斷一年多少個月)
2012-04-30T12:12:12 √ 2012-04-32T12:12:12 × (判斷一個月多少天)
2000-2-29T12:60:30  × 2000-02-29T12:60:30 √ 2000-02-30T12:12:12 × (判斷平年閏年)
2017-12-25T12:23:23 √ 2017-12-25T24:23:23 √ 2017-12-25T26:23:23 × (判斷小時)
2017-12-25T12:59:23 √ 2017-12-25T24:60:23 √ 2017-12-25T12:62:23 × (判斷分鐘)
2017-12-25T12:59:59 √ 2017-12-25T24:60:60 √ 2017-12-25T12:62:63 × (判斷秒)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章