Jika saya memiliki string seperti "something12" atau "something102", bagaimana saya menggunakan regex di javascript untuk mengembalikan hanya bagian-bagian nomor?
javascript
regex
Malcolm
sumber
sumber
d
, jadi.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
Anda juga dapat menghapus semua karakter non-digit (
\D
atau[^0-9]
):sumber
Untuk angka dengan pecahan desimal dan tanda minus, saya menggunakan cuplikan ini:
Pembaruan: - 7/9/2018
Menemukan alat yang memungkinkan Anda untuk mengedit ekspresi reguler secara visual: JavaScript Regular Expression Parser & Visualizer .
Memperbarui:
Berikut ini satu lagi yang dengannya Anda bahkan dapat debugger regexp: Penguji dan debugger regex online .
Memperbarui:
Satu lagi: RegExr .
Memperbarui:
Regexper dan Regex Pal .
sumber
Jika Anda hanya ingin digit:
Sekarang Anda mendapatkan digit bergabung
sumber
Saya kira Anda ingin mendapatkan nomor dari string. Dalam hal ini, Anda dapat menggunakan yang berikut ini:
sumber
get_numbers/1
mengembalikan array string, bukan angka. Sebagai contoh Anda, ini akan kembali: *["102"]
*["102", "12"]
* nullJawaban yang diberikan tidak benar-benar sesuai pertanyaan Anda, yang tersirat Trailing nomor. Juga, ingat bahwa Anda mendapatkan string kembali; jika Anda benar - benar membutuhkan nomor, berikan hasilnya:
Jika Anda berurusan dengan id item numerik pada halaman web, kode Anda juga bisa berguna menerima
Element
, mengekstraksi nomor dariid
(atau orang tua pertamanya denganid
); jika Anda memiliki alat yangEvent
berguna, kemungkinan Anda juga bisa mendapatkannyaElement
.sumber
sumber
IMO jawaban # 3 saat ini oleh Chen Dachao adalah cara yang tepat untuk pergi jika Anda ingin mendapatkan nomor apa pun, tetapi ungkapan reguler dapat disingkat dari:
untuk:
Misalnya, kode ini:
menghasilkan array ini:
Saya telah memotong contoh gradien linier MDN sehingga sepenuhnya menguji regexp dan tidak perlu menggulir di sini. Saya pikir saya telah memasukkan semua kemungkinan dalam hal angka negatif, desimal, akhiran satuan seperti deg dan%, koma dan penggunaan ruang yang tidak konsisten, dan karakter titik / titik dan tanda hubung / tanda hubung ekstra dalam teks "lin-grad.ient ". Tolong beri tahu saya jika saya melewatkan sesuatu. Satu-satunya hal yang dapat saya lihat yang tidak ditangani adalah angka desimal yang terbentuk dengan buruk seperti "0..8".
Jika Anda benar-benar menginginkan array angka, Anda dapat mengonversi seluruh array dalam baris kode yang sama:
Kode khusus saya, yang mem-parsing fungsi-fungsi CSS, tidak perlu khawatir tentang penggunaan karakter dot / periode non-numerik, sehingga ekspresi reguler bisa lebih sederhana:
sumber
Menggunakan split dan regex:
sumber
Sesuai jawaban @ Syntle, jika Anda hanya memiliki karakter non numerik Anda akan mendapatkan
Uncaught TypeError: Cannot read property 'join' of null
.Ini akan mencegah kesalahan jika tidak ada kecocokan yang ditemukan dan mengembalikan string kosong:
('something'.match( /\d+/g )||[]).join('')
sumber
Jika Anda ingin nomor yang dipisahkan titik / koma juga, maka:
atau
Anda dapat menggunakan https://regex101.com/ untuk menguji regex Anda.
sumber
Segala sesuatu yang dimiliki solusi lain, tetapi dengan sedikit validasi
sumber