83 votos

¿Cómo me tira no alfanuméricos caracteres de una cadena y mantener espacios?

Quiero crear una expresión regular que elimina todos los no-alphanumber personajes, pero mantiene los espacios. Esto es para limpiar la entrada de búsqueda antes de que llegue a la db. He aquí lo que tengo hasta ahora:

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

El problema aquí es que elimina todos los espacios. Soluciones sobre cómo conservar los espacios?

159voto

elusive Puntos 14184

Agregar espacios a los negado el carácter del grupo:

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

5voto

user3016551 Puntos 33

En este caso me gustaría utilizar el bang método (gsub! en lugar de gsub) con el fin de limpiar la entrada de forma permanente.

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

Esto evita una situación en la que @seach_query se usa en otra parte del código sin limpiar.

-3voto

John Doe Puntos 27

La mejor respuesta (al menos en ruby) es:

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X