Ich möchte einen regulären Ausdruck erstellen, der alle nicht alphanumerischen Zeichen entfernt, aber Leerzeichen behält. Dies dient zum Bereinigen der Sucheingabe, bevor sie die Datenbank erreicht. Folgendes habe ich bisher:
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
Das Problem hierbei ist, dass alle Leerzeichen entfernt werden. Lösungen zur Speicherung von Räumen?
ruby-on-rails
ruby
regex
ruby-on-rails-3
Der Ausgang
quelle
quelle
Antworten:
Fügen Sie der negierten Zeichengruppe Leerzeichen hinzu:
quelle
@search_query.gsub!(/[^0-9a-z ]/i, '')
\s
nicht sein\\s
In diesem Fall würde ich die Bang-Methode (gsub! Anstelle von gsub) verwenden, um den Eingang dauerhaft zu bereinigen.
Dies vermeidet eine Situation, in der @seach_query an anderer Stelle im Code verwendet wird, ohne ihn zu bereinigen.
quelle
Ich hätte den Inklusionsansatz verwendet. Anstatt alle außer Zahlen auszuschließen, würde ich nur Zahlen einschließen. Z.B
quelle
Vielleicht funktioniert das für einen solchen Fall:
quelle
Eine bessere Antwort (zumindest in Rubin) ist:
quelle