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


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, "");

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).


7

Coba ini:

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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.