我有JS代碼來驗證郵編:10個數字字符在第6個位置(例如,12345-6789)帶有破折號。我確認這兩部分都是使用!isNaN
的數字。isNaN沒有捕捉到字母
if (valSize == 10) {
var numVal1 = new Number(newVal.substring(0, 4));
var numVal2 = new Number(newVal.substring(6, 9));
if (newVal.charAt(5) == '-' && !isNaN(numVal1) && !isNaN(numVal2)) {
return newVal;
}
}
throw "Incorrect format";
這主要工作,但由於某些原因,以下值經過,並且不返回一個錯誤:
12345-678a
爲什麼IsNaN(子(6,9))允許通過在這種情況下?
備註:有人說異常應該用於*特殊*事情,輸入驗證不完全是例外。 – 2015-03-18 21:19:41