Quiero crear una expresión regular que elimine todos los caracteres que no sean alfanuméricos pero mantenga los espacios. Esto es para limpiar la entrada de búsqueda antes de que llegue a la base de datos. Esto es 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 retener espacios?
ruby-on-rails
ruby
regex
ruby-on-rails-3
La salida
fuente
fuente
Respuestas:
Agregue espacios al grupo de caracteres negado:
fuente
@search_query.gsub!(/[^0-9a-z ]/i, '')
\s
no\\s
En este caso, usaría el método bang (¡gsub! En lugar de gsub) para limpiar la entrada de forma permanente.
Esto evita una situación en la que @seach_query se usa en otra parte del código sin limpiarlo.
fuente
Hubiera utilizado el enfoque de inclusión. En lugar de excluir todo menos los números, solo incluiría números. P.ej
fuente
Quizás esto funcione para tal caso:
fuente
Una mejor respuesta (al menos en rubí) es:
fuente