如何从string中去除非字母数字字符并保留空格?

我想要创build一个正则expression式来删除所有非字母字符,但保留空格。 这是干净的searchinput之前,击中数据库。 以下是我到目前为止:

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

这里的问题是删除所有的空间。 如何保留空间的解决scheme?

为否定字符组添加空格:

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

在这种情况下,我会使用bang方法(gsub!而不是gsub)来永久清理input。

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

这样可以避免在代码中的其他位置使用@seach_query而不清除它的情况。

我会使用包含方法。 除了排除除数字外的所有数字,我只会列入数字。 例如

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

更好的答案(至less在ruby)是:

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