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!')); // falseSvar #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);
}
