Pertimbangkan skenario non-DOM di mana Anda ingin menghapus semua karakter non-numerik dari string menggunakan JavaScript / ECMAScript. Setiap karakter yang berada dalam jangkauan 0 - 9
harus disimpan.
var myString = 'abc123.8<blah>';
//desired output is 1238
Bagaimana Anda mencapai ini dalam JavaScript biasa? Harap ingat ini adalah skenario non-DOM, jadi jQuery dan solusi lain yang melibatkan browser dan acara menekan tombol tidak cocok.
javascript
string
p.campbell
sumber
sumber
\D
?replace
bekerja dengan sintaks yang tepat ini di semua browser? Sepertinya saya ingat mendapatkanobject has no method 'replace'
versi IE yang lebih lama ketika menggunakan ini dengan teks yang saya ambil dengan jQuery ... atau sesuatu seperti itu.Jika Anda perlu ini untuk meninggalkan titik untuk angka float, gunakan ini
sumber
"aaa 2.9px of bbb.".replace(/[^\d.-]/g, '')
→2.9.
Harus menghapus String yang mungkin mengelilingi Nomor ..-
case number (negatif) :)parseFloat("-1234.5.50 €".replace(/[^\d.-]/g, ''))
Gunakan ekspresi reguler, jika implementasi skrip Anda mendukungnya. Sesuatu seperti:
sumber
Anda dapat menggunakan RegExp untuk mengganti semua karakter non-digit:
sumber
Sesuatu di sepanjang garis:
sumber
yourString = yourString.replace ( /[^0-9.]/g, '' );
mencoba
Tampilkan cuplikan kode
sumber
Di Angular / Ionic / VueJS - Saya baru saja menemukan metode sederhana:
Penggunaan pada tampilan:
sumber
Sayangnya tidak ada jawaban di atas yang berfungsi untuk saya.
Saya ingin mengonversi angka mata uang dari string seperti
$123,232,122.11
(1232332122.11) atauUSD 123,122.892
(123122.892) atau mata uang seperti₹ 98,79,112.50
(9879112.5) untuk memberi saya output angka termasuk penunjuk desimal.Harus membuat regex saya sendiri yang terlihat seperti ini:
sumber
Fungsi pendek untuk menghapus semua karakter non-numerik tetapi mempertahankan desimal (dan mengembalikan nomor):
sumber
kami berada di 2017 sekarang Anda juga dapat menggunakan ES2016
atau
Hasilnya adalah
sumber