[英]Best way to validate a string in js
我需要確保我的字符串是一個數字,為此,我正在使用isNaN函數,並且一切正常,但是在輸入字段'0e1'中鍵入時遇到問題。
我想知道檢查我的字符串是否為數字並且沒有科學計數法的最佳方法是什么
嘗試使用正則表達式。 這里有些例子。 如果找不到匹配項,則結果為null。
alert("0e1".match(/^[-+]?[0-9]*\.?[0-9]+$/)) // null
alert("1".match(/^[-+]?[0-9]*\.?[0-9]+$/)) // 1
alert("-1".match(/^[-+]?[0-9]*\.?[0-9]+$/)) // -1
alert("1.0".match(/^[-+]?[0-9]*\.?[0-9]+$/)) // 1.0
alert("-1.5".match(/^[-+]?[0-9]*\.?[0-9]+$/)) // -1.5
alert("-1.5 4".match(/^[-+]?[0-9]*\.?[0-9]+$/)) // null
如果您希望輸入僅是整數或浮點數,請執行此操作;
var input = '0e1';
if(!isNaN(input) && (parseInt(input, 10).toString() == input || parseFloat(input).toString() == input)){
//This is a valid number
}
實際上,您使用的方法很好。 您的代碼有一個問題:
isNaN()
應該是!isNaN()
。 請記住, isNaN()
檢查數字是否為NotaNumber。 `!isNaN()檢查它是否為數字。
isNaN(0e1)
應該返回false,因為0e1是一個數字! 我知道,這有點令人困惑。
!isNaN(0e1)
將返回TRUE,因為!isNan()
檢查值是否為數字。
我希望這有幫助。
isNaN()函數確定值是否為非法數字,因此,如果不是數字,則為非法數字 。 isNaN函數的好處是,所有瀏覽器(ch,即ff,op,sf)都支持該功能。
function myFunction() {
var a = isNaN(123) + "<br>";
var b = isNaN(-1.23) + "<br>";
var c = isNaN(123-456) + "<br>";
var d = isNaN("Hello") + "<br>";
var e = isNaN("2014/11/19") + "<br>";
var result = a + b + c + d + e;
document.getElementById("test").innerHTML = result;
}
因此結果將是:如果value是一個數字,則返回“ False”;如果不是一個數字,則返回“ True”。
您可以在JsFiddle上對其進行測試: isNaN()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.