/ / Comment puis-je supprimer des caractères non alphanumériques d'une chaîne et conserver des espaces? - ruby-on-rails, ruby, regex, ruby-on-rails-3

Comment puis-je supprimer les caractères non alphanumériques d'une chaîne et conserver des espaces? - ruby-on-rails, ruby, regex, ruby-on-rails-3

Je veux créer une regex qui supprime tous les caractères non alphanumériques mais conserve des espaces. Ceci est pour nettoyer l'entrée de recherche avant qu'elle frappe la base de données. Voici ce que j'ai jusqu'à présent:

@search_query = @search_query.gsub(/[^0-9a-z]/i, "")

Le problème ici est qu'il supprime tous les espaces. Des solutions pour conserver des espaces?

Réponses:

158 pour la réponse № 1

Ajoutez des espaces au groupe de caractères annulé:

@search_query = @search_query.gsub(/[^0-9a-z ]/i, "")

5 pour la réponse № 2

Dans ce cas, j'utiliserais la méthode bang (gsub! Au lieu de gsub) pour nettoyer l'entrée en permanence.

#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/W/,"")

Cela évite une situation où @seach_query est utilisé ailleurs dans le code sans le nettoyer.


3 pour la réponse № 3

J'aurais utilisé l'approche d'inclusion. Plutôt que d'exclure tout sauf les chiffres, je n'incluais que des nombres Par exemple.

@search_query.scan(/[da-zs]/i).join

-3 pour la réponse № 4

Une meilleure réponse (au moins en rubis) est:

@search_query.gsub!(/^(w|s*)/,"")