Я хочу створити регулярний вираз, який видаляє всі символи, які не є алфавітними, але зберігає пробіли. Це призначено для очищення вводу пошуку, перш ніж він потрапить до db. Ось що я до сих пір:
@search_query = @search_query.gsub(/[^0-9a-z]/i, "")
Проблема тут полягає в тому, що вона видаляє всі пробіли. Рішення про те, як зберегти простір?
Відповіді:
158 для відповіді № 1Додайте пробіли до групи з відхиленими символами:
@search_query = @search_query.gsub(/[^0-9a-z ]/i, "")
5 для відповіді № 2
У цьому випадку я б використовував метод bang (gsub! Замість gsub), щоб очистити вхід постійно.
#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/W/,"")
Це дозволяє уникнути ситуації, коли @seach_query використовується в іншому місці в коді без очищення.
3 для відповіді № 3
Я б використав підхід включення. Замість того, щоб виключити всі, крім чисел, я б включив лише номери. Напр.
@search_query.scan(/[da-zs]/i).join
-3 для відповіді № 4
Найкраща відповідь (принаймні на ruby):
@search_query.gsub!(/^(w|s*)/,"")