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?
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
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.
function isNumeric(x) {
return parseFloat(x).toString() === x.toString();
}
Meskipun ini akan kembali palsu
pada string dengan leading atau trailing nol.