问题描述
|
我想创建一个删除所有非字母数字字符但保留空格的正则表达式。这是在到达数据库之前清除搜索输入。这是我到目前为止的内容:
@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,\'\')
,更好的答案(至少在ruby中)是:
@search_query.gsub!(/^(\\w|\\s*)/,\'\')