Quero criar um regex que remove todos os caracteres não alfanuméricos, mas mantém espaços. Isso é feito para limpar a entrada de pesquisa antes de chegar ao banco de dados. Aqui está o que tenho até agora:
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
O problema aqui é que remove todos os espaços. Soluções sobre como reter espaços?
ruby-on-rails
ruby
regex
ruby-on-rails-3
A saída
fonte
fonte
Respostas:
Adicione espaços ao grupo de caracteres negado:
fonte
@search_query.gsub!(/[^0-9a-z ]/i, '')
\s
não deveria ser\\s
Nesse caso, eu usaria o método bang (gsub! Em vez de gsub) para limpar a entrada permanentemente.
Isso evita uma situação em que @seach_query é usado em outro lugar no código sem limpá-lo.
fonte
Eu teria usado a abordagem de inclusão. Em vez de excluir tudo, exceto os números, eu incluiria apenas números. Por exemplo
fonte
Talvez isso funcione para esse caso:
fonte
Uma resposta melhor (pelo menos em rubi) é:
fonte