簡體   English   中英

如何檢查文本字段值的格式是否正確?

[英]How can I check if a text field value has the correct format?

我有一個文本字段,用於YYYY-MM-DD格式的日期。 我要做的是檢查日期的正確性。 我的概念是:

deadline = document.getElementById("Deadline").value;
if (deadline[0] == "0" || 
    deadline[0] == "1" ||
    deadline[0] == "2" || 
    deadline[0] == "3" || 
    deadline[0] == "4" || 
    deadline[0] == "5" ||
    deadline[0] == "6" ||
    deadline[0] == "7" ||
    deadline[0] == "8" ||
    deadline[0] == "9" ){
    if(deadline[1] == "0" || ...){
        if(deadline[2] == "0" || ...){
            ...

            }else{alert("Wrong Format!")}
        }
    }
}

有更有效的方法嗎?

使用正則表達式:

 // yyyy-mm-dd var re = /^\\d{4}-\\d{1,2}-\\d{1,2}$/; alert(re.test("2001-11-02")); 

您應該使用正則表達式。 https://regex101.com/r/iO0pY2/1上檢查代碼。 這里是如何使用它:

var str = '2015-02-05'
var re = /^(\d{4})\-(\d{1,2})\-(\d{1,2})$/
var valid = re.test(str);

盡管使用RegExp可以使您大致了解格式的正確性,但它不會檢查值的有效性。 更好的方法可能是這樣的。

 function inRange (val, min, max) { return val >= min && val <= max; } var deadLine = document.getElementById('deadline'), out = document.getElementById('out'); deadLine.addEventListener('change', function (e) { var text = e.target.value, valid, parts, year, month, day, result; if ((/^\\d{1,4}-\\d{2}-\\d{2}$/).test(text)) { parts = text.split('-'); year = parts[0]; month = parts[1]; day = parts[2], valid = inRange (year, 0, 9999) && inRange (month, 1, 12) && inRange (day, 0, 31) && day == new Date(year, month - 1, day).getDate(); } if (valid) { result = 'Correct Format and date!'; } else { result = 'Wrong Format or date!'; } out.appendChild(document.createTextNode(result + '\\n')); }, false); 
 <input id="deadline" type="text"></input> <pre id="out"></pre> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM