var snumber1 = "123456789";
var scharacter2 = "abcdefgh";
有兩個字符串。我如何確保snumber1只包含數字? 什麼正則表達式?我如何區分數字字符串和字符串?
var snumber1 = "123456789";
var scharacter2 = "abcdefgh";
有兩個字符串。我如何確保snumber1只包含數字? 什麼正則表達式?我如何區分數字字符串和字符串?
var snumber1 = "123456789";
//built-in function
alert (!isNaN (snumber1));
//regexp
alert (/^[0-9]+$/.test (snumber1));
//another regexp
alert (/^\d+$/.test (snumber1));
//convert to Number object
alert (parseFloat (snumber1) === Number (snumber1));
'/ [0-9] /'將匹配任何至少有一位數的字符串。 –
!isNaN和isNaN有什麼區別? CanNaN就夠了嗎? – DrStrangeLove
是的,只是要求查看isNaN()是否爲false。 –
正則表達式是不必要的:
var snumber1 = "123456789",
scharacter2 = "abcdefgh";
if (isNaN(+snumber1)) {
alert('snumber is not a number!');
}
if (!isNaN(+scharacter2)) {
alert('scharacter2 is not a string!');
}
請注意,我用的是+
運營商做的強制類型轉換。這樣做總是會導致一個數字或NaN。如果使用parseInt
或parseFloat
函數,則可以從parseInt('010abc', 10)
獲得「10」。這顯然沒有通過你的測試「只有數字」(*)。
更好的是,考慮到isNaN有邊緣情況,使用'if(+ sNumber1!= + sNumber1)',如果sNumber1不是數字,則爲真。 –
@Thaddee:'+ sNumber!= + sNumber'與* isNaN *具有*完全相同的邊緣情況,另外一個缺點是它比'isNaN'慢 - 不管信不信,'isNaN'表現相同在檢查它之前傳遞的參數上的數字轉換。這也意味着'isNaN(+ str)'中的'+'是完全不必要的,只是增加了額外的開銷而沒有任何好處。 –
@Andy E,我沒有意識到這一點。謝謝。 –
您應該使用SWITCH
而不是IF
。
var valueA=100
switch(/^[0-9]+$/.test(valueA))
{
case false:
alert ("'" + valueA + "'" + " Is NOT a number.Try Again");
break;
case true;
alert ("you've got numbers")
break;
}
這將返回true
。
一個正則表達式在這裏並不是真的需要,但如果你很好奇,它將是'/^\ d + $ /'只有數字,或者'/^\ d * $ /'如果你想匹配空字符串也。 –