我想创建一个正则表达式,删除所有非字母数字字符但保留空格。这是为了在搜索输入到达数据库之前对其进行清理。这是我到目前为止所拥有的:
@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-zs]/i).join
也许这将适用于这种情况:
# do not replace any word characters and spaces
@search_query = @search_query.gsub(/[^w ]/g, '')
一个更好的答案(至少在红宝石中)是:
@search_query.gsub!(/^(w|s*)/,'')