Verificați dacă șirul conține doar cifre

Vreau sa verific daca un "string" conține doar cifre. Am folosit asta:

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

if (isANumber){
    ..
}

Dar a dat seama că acesta permite, de asemenea, + și -. Practic, vreau să mă asigur că o "intrare" conține DOAR cifre și nici alte caractere. Din +100 " și " -5 sunt ambele numere, isNaN() nu este modul corect de a merge. Poate un regexp este ceea ce am nevoie? Orice sfaturi?

Soluția

ce zici

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

Dacă doriți pentru a sprijini chiar pentru valori float (Dot valori separate), atunci puteți folosi această expresie :

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

Asta este ceea ce vrei

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

Aici's un alt interesant, ușor de citit modalitate de a verifica dacă un șir conține numai cifre.

Această metodă funcționează prin divizarea șir într-o matrice folosind răspândirea operator, și apoi folosește fiecare() metoda pentru a testa dacă toate elementele (caractere) în matrice sunt incluse în șirul de cifre'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
Comentarii (2)

Ei bine, puteți utiliza următoarele regex:

^\d+$
Comentarii (0)

Aici este o soluție fără a folosi expresii regulate:

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
}

în cazul în care 48 și 57 sunt char coduri pentru "0" și "9", respectiv.

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

Deși acest lucru va reveni "false" pe siruri de caractere de conducere sau zerouri la sfârșit.

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

Dacă un șir conține doar cifre se va intoarce null

Comentarii (0)