string
に数字しか含まれていないかどうかを確認したいです。私はこれを使った:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
しかし+
と-
も許されることを理解しました。基本的に、私はinput
が唯一の数字を含み、他の文字を含まないようにしたいです。 +100
と-5
はどちらも数字なので、isNaN()
は正しい方法ではありません。おそらく正規表現が必要ですか?任意のヒント?
どうですか
var isnum = /^\d+$/.test(val);
string.match(/^[0-9]+$/) != null;
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
Float値(ドット区切り値)をサポートしたい場合は、次の式を使用できます。
var isNumber = /^\d+\.\d+$/.test(value);
これは、文字列に数字しか含まれていないかどうかを確認するためのもう1つの興味深い、読みやすい方法です。
このメソッドは、 拡散演算子 を使用して文字列を配列に分割し、次に every()
メソッドを使用してすべての要素がないかどうかをテストします。配列 内の(文字)は、数字のストリング'0123456789'
に含まれています 。
const digits_only = string => [...string].every(c => '0123456789'.includes(c));
console.log(digits_only('123')); // true
console.log(digits_only('+123')); // false
console.log(digits_only('-123')); // false
console.log(digits_only('123.')); // false
console.log(digits_only('.123')); // false
console.log(digits_only('123.0')); // false
console.log(digits_only('0.123')); // false
console.log(digits_only('Hello, world!')); // false
これはあなたが欲しいものです
function isANumber(str){
return !/\D/.test(str);
}
これは正規表現を使わない解決策です:
function onlyDigits(s) {
for (let i = s.length - 1; i >= 0; i--) {
const d = s.charCodeAt(i);
if (d < 48 || d > 57) return false
}
return true
}
ここで、48と57は、それぞれ "0"と "9"の文字コードです。
まあ、あなたは次の正規表現を使用することができます:
^\d+$
function isNumeric(x) {
return parseFloat(x).toString() === x.toString();
}
ただし、これは先頭または末尾のゼロがある文字列に対してfalse
を返します。