Memeriksa apakah string yang hanya berisi angka

Saya ingin memeriksa apakah string hanya berisi angka. Saya menggunakan ini:

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

if (isANumber){
    ..
}

Tetapi menyadari bahwa hal itu juga memungkinkan + dan -. Pada dasarnya, saya ingin memastikan sebuah input HANYA berisi angka dan tidak ada karakter lain. Sejak +100 dan -5 adalah angka, isNaN() adalah bukan cara yang tepat untuk pergi. Mungkin regexp adalah apa yang saya butuhkan? Ada tips?

Larutan

bagaimana

var isnum = /^\d+$/.test(val);
Komentar (7)
string.match(/^[0-9]+$/) != null;
Komentar (0)
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
Komentar (2)

Jika anda ingin bahkan dukungan untuk float nilai (Dot separated values) maka anda dapat menggunakan ungkapan ini :

var isNumber = /^\d+\.\d+$/.test(value);
Komentar (3)

Ini adalah apa yang anda inginkan

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

Berikut ini's lain yang menarik, dapat dibaca cara untuk memeriksa apakah string yang hanya berisi angka.

Metode ini bekerja dengan memisahkan string menjadi array dengan menggunakan menyebar operator, dan kemudian menggunakan setiap() metode untuk menguji apakah semua elemen (karakter) dalam array termasuk dalam string dari digit'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
Komentar (2)

Nah, anda dapat menggunakan regex berikut:

^\d+$
Komentar (0)

Berikut ini adalah solusi tanpa menggunakan ekspresi reguler:

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
}

di mana 48 dan 57 adalah char kode untuk "0" dan "9", masing-masing.

Komentar (0)
function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

Meskipun ini akan kembali palsu pada string dengan leading atau trailing nol.

Komentar (0)
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false

Jika string yang hanya berisi angka itu akan mengembalikan null

Komentar (0)