Я хочу создать регулярное выражение, которое удаляет все символы, отличные от буквенно-цифровых, но сохраняет пробелы. Это необходимо для очистки ввода поиска до того, как он попадет в базу данных. Вот что у меня есть на данный момент:
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
Проблема здесь в том, что он удаляет все пробелы. Решения о том, как сохранить пробелы?
Ответы:
Добавьте пробелы к отрицательной группе символов:
источник
@search_query.gsub!(/[^0-9a-z ]/i, '')
\s
не\\s
В этом случае я бы использовал метод bang (gsub! Вместо gsub), чтобы навсегда очистить ввод.
Это позволяет избежать ситуации, когда @seach_query используется в другом месте кода без его очистки.
источник
Я бы использовал подход включения. Вместо того, чтобы исключать все, кроме чисел, я бы включил только числа. Например
источник
Возможно, это сработает в таком случае:
источник
Лучший ответ (по крайней мере, в рубине):
источник