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

问题描述

| 我想创建一个删除所有非字母数字字符但保留空格的正则表达式。这是在到达数据库之前清除搜索输入。这是我到目前为止的内容
@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*)/,\'\')
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...