javascript - Sjekk om streng bare inneholder sifre


Jeg vil sjekke om en string inneholder bare sifre. Jeg brukte dette:

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

if (isANumber){
    ..
}

Men innså at det også tillater + og -. I utgangspunktet vil jeg forsikre meg om at et input kun inneholder sifre og ingen andre tegn. Siden +100 og -5 begge er tall, er ikke isNaN() den riktige måten å gå frem på. Kanskje en regexp er det jeg trenger? Noen tips?

Svar #1

hvordan om

let isnum = /^\d+$/.test(val);

Svar #2

string.match(/^[0-9]+$/) != null;

Svar #3

String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false

Svar #4

Hvis du til og med vil støtte for flyttallsverdier (punktumseparerte verdier), kan du bruke dette uttrykket:

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

Svar #5

Her er en annen interessant, lesbar måte å sjekke om en streng inneholder bare sifre.

Denne metoden fungerer ved å dele strengen inn i et array ved hjelp av spread-operatoren, og bruker deretter every()-metoden for å teste om alle elementene (tegnene) i arrayet er inkludert i strengene med sifre '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

Svar #6

Her er en løsning uten å bruke regulære uttrykk:

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
}

der 48 og 57 er tegnkodene for «0» og «9», henholdsvis.

Svar #7

Dette er det du vil ha

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

Relaterte artikler