轨道上的红宝石 - 如何从字符串中删除非字母数字字符并保留空格



我想创建一个正则表达式,删除所有非字母数字字符但保留空格。这是为了在搜索输入到达数据库之前对其进行清理。这是我到目前为止所拥有的:

@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*)/,'')

相关内容

  • 没有找到相关文章

最新更新