Regex untuk mengganti semuanya kecuali angka dan titik desimal

113

Saya memiliki bidang teks yang hanya perlu teks atau desimal. Berikut adalah kode yang saat ini saya gunakan untuk mengganti semuanya kecuali angka dan titik desimal. Masalahnya adalah, saya tidak dapat menemukan regex yang akan mengidentifikasi yang lainnya

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\ D berfungsi dengan baik, tetapi saya sudah mencoba (?!.), (?!\.), [^.], [^\.]dan seterusnya ...

Adakah saran untuk ekspresi reguler yang mengidentifikasi secara positif dengan apa pun kecuali angka atau desimal?

Terima kasih untuk bantuannya

guildsbounty
sumber
jika Anda ingin memeriksa angka sebenarnya daripada digit numerik: stackoverflow.com/questions/42328875/…
cregox

Jawaban:

239

Gunakan ini:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");
Chandu
sumber
1
@Hugo ini tidak mengizinkan apa pun, Anda sebaiknya tidak meneruskan string yang berpotensi berisi lebih banyak titik desimal dan pra-proses terlebih dahulu. Ini seperti mengatakan string memungkinkan setiap karakter ...
jave.
3
Kemudian jalankan nilai yang dikembalikan melalui parseFloat. Itu akan menghapus poin desimal tambahan. misalnyaparseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon
1
Ini bagus untuk mengubah angka yang sudah diformat seperti uang menjadi float yang dapat dihitung.
lu1s
8

Menghapus hanya bagian desimal dapat dilakukan sebagai berikut:

number.replace(/(\.\d+)+/,'');

Ini akan mengubah 13.6667px menjadi 13px (membiarkan unit px tidak tersentuh).

lubosdz
sumber
7

Coba ini:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");

Rumah pantai
sumber
2
jawaban Terbaik. Menghapus 0.000 10.000000 .22 2.234, tetapi menyimpan 1, 10, 10.1, 10.22
Robert Baker
Ekspresi ini terlihat rumit, dapatkah Anda menjelaskan cara kerjanya atau apa sebenarnya yang akan dihapusnya?
Minderov
Ini tidak bekerja dengan masukan cyrillic seperti "5.12 руб."
Minderov
4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - hasil string kosong
yAnTar
0

Periksa tautan Demo Ekspresi Reguler

gunakan reg exp di bawah ini

[az] + [^ 0-9 \ s.] + |. (?! \ d)

divya
sumber