영숫자가 아닌 모든 문자를 제거하지만 공백은 유지하는 정규식을 만들고 싶습니다. 이것은 db에 도달하기 전에 검색 입력을 정리하는 것입니다. 지금까지 내가 가진 내용은 다음과 같습니다.
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
여기서 문제는 모든 공백을 제거한다는 것입니다. 공간을 유지하는 방법에 대한 솔루션?
답변
부정 문자 그룹에 공백을 추가하십시오.
@search_query = @search_query.gsub(/[^0-9a-z ]/i, '')
답변
이 경우 입력을 영구적으로 정리하기 위해 bang 메서드 (gsub 대신 gsub!)를 사용합니다.
#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/\W/,'')
이렇게하면 정리하지 않고 코드의 다른 곳에서 @seach_query가 사용되는 상황을 피할 수 있습니다.
답변
나는 포함 접근법을 사용했을 것입니다. 숫자를 제외하고 모두 제외하는 대신 숫자 만 포함했습니다. 예
@search_query.scan(/[\da-z\s]/i).join
답변
아마도 이것은 그러한 경우에 효과가있을 것입니다.
# do not replace any word characters and spaces
@search_query = @search_query.gsub(/[^\w ]/g, '')
답변
(적어도 루비에서는) 더 나은 대답은 다음과 같습니다.
@search_query.gsub!(/^(\w|\s*)/,'')