2012年8月23日 星期四

JavaScript 驗證數字

要驗證某個變數的值是不是數字,在 JavaScript 當中好像用 Regular Expression 結果會怪怪的
我試了好幾種不同的 Regular Expression,但用 match() 時都有些奇怪的問題
經由同事的協助,發現 [1] 當中 Joel Coehoorn 的回應~
關鍵的概念就是他標粗體的部份:如果想知道一個值能不能轉成數字,最好的方法就是實際轉一次。
function IsNumeric(input) {
  return (input - 0) == input && input.length > 0;
}
上面的作法就是 input 的值轉成 number 型態以後,檢查看看跟原本的值還是不是一樣
(例如 input = "1a" 時,單純轉數字會得到 input = 1,非數字的部份會被過濾掉)
然後再去除空值的狀況。

如果只能是整數的話,就檢查值裡面有沒有帶小數點。
function IsNumeric(input) {
  return (input - 0) == input && input.length > 0 && input.indexOf(".") < 0;
}

參考資料:
1、Validate numbers in JavaScript - IsNumeric()

沒有留言: