英数字以外の文字をすべて削除するがスペースは保持する正規表現を作成したい。これは、データベースにヒットする前に検索入力を消去するためです。ここに私が持っているものがあります:
@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, '')