Ответ 1
Добавить пробелы в группу символов с отрицанием:
@search_query = @search_query.gsub(/[^0-9a-z ]/i, '')
Я хочу создать регулярное выражение, которое удаляет все символы без алфавитного номера, но сохраняет пробелы. Это нужно, чтобы очистить ввод данных до того, как он попадет в db. Вот что я до сих пор:
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
Проблема в том, что он удаляет все пробелы. Решения о том, как сохранить пробелы?
Добавить пробелы в группу символов с отрицанием:
@search_query = @search_query.gsub(/[^0-9a-z ]/i, '')
В этом случае я буду использовать метод bang (gsub! вместо gsub), чтобы окончательно очистить вход.
#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/\W/,'')
Это позволяет избежать ситуации, когда @seach_query используется в другом месте кода без его очистки.
Я бы использовал подход включения. Вместо того, чтобы исключать все, кроме чисел, я бы включил только цифры. Например.
@search_query.scan(/[\da-z\s]/i).join
Может быть, это будет работать для такого случая:
# do not replace any word characters and spaces
@search_query = @search_query.gsub(/[^\w ]/g, '')
Лучший ответ (по крайней мере, в рубине):
@search_query.gsub!(/^(\w|\s*)/,'')