2011-03-02 9 views
1

동적 검색 모음을 만들려고하는데 도움이 필요합니다.javascript jquery regexp replace

지금은 다른 문자열로 문자열을 대체하려고 시도하지만 성공하지 못합니다.

임 사용자로부터 입력을 받고 :

var location_keyword = $("#si_user_location").val(); 

지금 내가 공백을 "대체 싶습니다"와 "|" 이 정규 표현식에서 OR로 사용하십시오.

예를 들어 사용자가 "Turkey Alanya"를 쓰는 경우 터키 또는 Alanya 검색 결과가 "Turkey | Alanya"가되기를 원합니다.

내가 이런 식으로 뭔가를 시도했지만 내가 같은 식으로하기 전에 PHP에서이 작업을 수행하는 데 사용

var location_keyword = $("#si_user_location").val(); 
location_keyword.replace(" ","|"); 
var regexp_loc = new RegExp(location_keyword, "i"); 

일을 didnt는이 같은 caseinsensetive

preg_replace('/'.preg_quote($keyword).'/i', "<span>$0</span>", $string) 

내가 문자열을 대체 할 수있는 방법 js에서이 작업을 수행 할 수 있습니까?

PHP에서 마지막 표현식을 사용하여 결과에서 키워드를 강조 표시했습니다.이 키워드는 js에서도 수행하고 싶습니다.

희망 제가 도움을 얻을 수 있기를 바랍니다. 미리 감사드립니다! :) 안부의

, 알렉산더는

답변

3

이 라인에 replace를 사용하는 두 가지 문제가있다는 :

location_keyword.replace(" ","|"); 
  • 그것은 문자열을 수정하지 않습니다는 - 그것은 새로운 문자열을 반환 . 호출 결과를 원래 변수에 재 할당해야합니다. 그렇지 않으면 변경된 문자열이 표시되지 않습니다.
  • g (전역) 플래그와 함께 정규 표현식을 사용하지 않는 한 첫 번째 어커런스 만 바꿉니다.

대신을 시도해보십시오

location_keyword = location_keyword.replace(/ /g, '|'); 
+2

정규식에서/g는 무엇입니까? – Alexander

+0

/g은 전역을 의미하며 haystack에있는 바늘의 모든 인스턴스를 바꾸는 대신 사용자가 찾은 첫 번째 인스턴스 만 바꾸는 것입니다. – rncrtr

1

이 시도 :

 
location_keyword = location_keyword.replace(/\s+/,"|"); 
0

이것은 잘 작동합니다 :

location_keyword.replace(/ /g,"|"); 

희망이 도움이! :)