web-dev-qa-db-ja.com

文字列に数字しか含まれていないか確認してください

stringに数字しか含まれていないかどうかを確認したいです。私はこれを使った:

var isANumber = isNaN(theValue) === false;

if (isANumber){
    ..
}

しかし+-も許されることを理解しました。基本的に、私はinputが唯一の数字を含み、他の文字を含まないようにしたいです。 +100-5はどちらも数字なので、isNaN()は正しい方法ではありません。おそらく正規表現が必要ですか?任意のヒント?

245
patad

どうですか

var isnum = /^\d+$/.test(val);
496
Scott Evernden
string.match(/^[0-9]+$/) != null;
51
Jason S
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
17
balupton

Float値(ドット区切り値)をサポートしたい場合は、次の式を使用できます。

var isNumber = /^\d+\.\d+$/.test(value);
7
Adithya Sai

これは、文字列に数字しか含まれていないかどうかを確認するためのもう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
5
Grant Miller

これはあなたが欲しいものです

function isANumber(str){
  return !/\D/.test(str);
}
5

これは正規表現を使わない解決策です:

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"の文字コードです。

2
SC1000

まあ、あなたは次の正規表現を使用することができます:

^\d+$
2
Joey
function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

ただし、これは先頭または末尾のゼロがある文字列に対してfalseを返します。

2