Saya ingin memeriksa apakah a string
hanya berisi digit. Saya menggunakan ini:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Tetapi menyadari bahwa itu juga memungkinkan +
dan -
. Pada dasarnya, saya ingin memastikan input
hanya berisi digit dan tidak ada karakter lain. Karena +100
dan -5
keduanya angka, isNaN()
bukan cara yang tepat untuk pergi. Mungkin regexp adalah yang saya butuhkan? Ada tips?
javascript
numbers
digits
patad
sumber
sumber
\d
adalah persis sama dengan[0-9]
.Regular Expressions
kerjanya/^\d*$/
sebagai gantinya , jika Anda menemukan string kosong yang hanya berisi digit .sumber
sumber
isNumber = () => /^\d+$/.test(this);
sebagai gantinya, dan gunakan sebagaiconsole.log(isNumber("123123));
Jika Anda ingin bahkan mendukung nilai float (Nilai dipisahkan dot) maka Anda dapat menggunakan ungkapan ini:
sumber
\d+
ke\d*?
, itu akan dapat mencocokkan 0 - 9, serta angka-angka seperti .333var isNumber = /^\d*\.?\d+$/.test(value)
- cocok dengan '3.5', '.5', '3' - tidak cocok dengan '3.'Berikut ini adalah cara lain yang menarik dan mudah dibaca untuk memeriksa apakah string hanya berisi digit.
Metode ini berfungsi dengan memisahkan string menjadi array menggunakan operator spread , dan kemudian menggunakan
every()
metode untuk menguji apakah semua elemen (karakter) dalam array termasuk dalam string digit'0123456789'
:sumber
true
string kosong''
, dan array kosong[]
, array bilangan bulat[1, 2, 3]
(setelah <10). Ini lebih rentan terhadap bug / penyalahgunaan daripada ekspresi reguler dasar yang/^\d+$/
saya pikirIni yang kamu inginkan
sumber
Inilah solusi tanpa menggunakan ekspresi reguler:
di mana 48 dan 57 adalah kode char untuk "0" dan "9", masing-masing.
sumber
Meskipun ini akan kembali
false
pada string dengan nol terkemuka atau tertinggal.sumber
Nah, Anda bisa menggunakan regex berikut:
sumber
jika Anda ingin memasukkan nilai float juga Anda dapat menggunakan kode berikut
ini akan menguji hanya digit dan digit yang dipisahkan dengan '.' tes pertama akan mencakup nilai-nilai seperti 0,1 dan 0 tetapi juga 0,1, itu tidak akan memungkinkan 0 sehingga solusi yang saya usulkan adalah membalikkan theValue sehingga .1 akan menjadi 1. maka ekspresi reguler yang sama tidak akan mengizinkannya.
contoh:
sumber
Jika sebuah string hanya berisi angka, itu akan mengembalikan nol
sumber