Saya ingin membuat regex yang menghapus semua karakter non-alfanumerik tetapi tetap menggunakan spasi. Ini untuk membersihkan input pencarian sebelum mencapai db. Inilah yang saya miliki sejauh ini:
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
Masalah di sini adalah menghapus semua spasi. Solusi tentang bagaimana mempertahankan ruang?
ruby-on-rails
ruby
regex
ruby-on-rails-3
Keluar
sumber
sumber
Jawaban:
Tambahkan spasi ke grup karakter yang dinegasikan:
sumber
@search_query.gsub!(/[^0-9a-z ]/i, '')
\s
tidak\\s
Dalam hal ini saya akan menggunakan metode bang (gsub! Bukan gsub) untuk membersihkan input secara permanen.
Ini menghindari situasi di mana @seach_query digunakan di tempat lain dalam kode tanpa membersihkannya.
sumber
Saya akan menggunakan pendekatan inklusi. Daripada mengecualikan semua kecuali angka, saya hanya akan memasukkan angka. Misalnya
sumber
Mungkin ini akan berhasil untuk kasus seperti itu:
sumber
Jawaban yang lebih baik (setidaknya di ruby) adalah:
sumber