我試了好幾種不同的 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()
沒有留言:
張貼留言