Подтвердить что ты не робот

Как удалить не буквенно-цифровые символы из строки и сохранить пробелы?

Я хочу создать регулярное выражение, которое удаляет все символы без алфавитного номера, но сохраняет пробелы. Это нужно, чтобы очистить ввод данных до того, как он попадет в db. Вот что я до сих пор:

@search_query = @search_query.gsub(/[^0-9a-z]/i, '')

Проблема в том, что он удаляет все пробелы. Решения о том, как сохранить пробелы?

4b9b3361

Ответ 1

Добавить пробелы в группу символов с отрицанием:

@search_query = @search_query.gsub(/[^0-9a-z ]/i, '')

Ответ 2

В этом случае я буду использовать метод bang (gsub! вместо gsub), чтобы окончательно очистить вход.

#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/\W/,'')

Это позволяет избежать ситуации, когда @seach_query используется в другом месте кода без его очистки.

Ответ 3

Я бы использовал подход включения. Вместо того, чтобы исключать все, кроме чисел, я бы включил только цифры. Например.

@search_query.scan(/[\da-z\s]/i).join

Ответ 4

Может быть, это будет работать для такого случая:

# do not replace any word characters and spaces
@search_query = @search_query.gsub(/[^\w ]/g, '')

Ответ 5

Лучший ответ (по крайней мере, в рубине):

@search_query.gsub!(/^(\w|\s*)/,'')