107 votes

Comment puis-je bande caractères non alphanumériques à partir d'une chaîne et de conserver les espaces?

Je veux créer une regex qui supprime tous les non-alphanumber personnages, mais conserve des espaces. C'est pour nettoyer la recherche d'entrée avant qu'il ne frappe la db. Voici ce que j'ai à ce jour:

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

Le problème ici est qu'elle supprime tous les espaces. Des Solutions sur la façon de conserver des espaces?

199voto

elusive Points 14184

Ajouter des espaces pour le caractère niées groupe:

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

10voto

user3016551 Points 33

Dans ce cas, je voudrais utiliser le bang méthode (gsub! au lieu de gsub) afin de nettoyer l'entrée en permanence.

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

Cela permet d'éviter une situation où @seach_query est utilisé ailleurs dans le code sans le nettoyer.

-3voto

John Doe Points 27

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X