2011-03-29 2 views
1

검색에 제출할 검색어를 작성하면 입력 필드 중 하나가 "OR"에 대한 필터입니다. + 공백을 + 또는 +로 바꾸어야합니다. 공백이 따옴표로 묶인 텍스트 바깥에있는 경우에만.자바 스크립트에서 문자열을 무시하는 정규 표현식

"해피 일"+ OR + "사랑 보트"

내가 그 여기에 할 것입니다 코드 작업 한 : 텍스트를 따옴표가있는 경우

var filter2=$('[name=filter2]').val(); 
var str2 = jQuery.trim(filter2); 
var filter2d = str2.replace(/" "/g, "\"+OR+\""); 

이 단지 작품을 그래서이 논리이다. .I뿐만 아니라이 작업을 수행 할 수 있도록하고 싶습니다 :

fonzy를 + 또는 + "해피 일"어떤 도움이

,691을 감사

+ OR + "사랑 보트"

답변

1

그것을 맞았다 : 이것은 당신의 인용 문자열에는 인용 부호를 포함하지 않는 것으로 가정

var input = '"abc def" ghi "klmno pqr" xyz'; 
input.replace (/("[^"]*"|\w+)(\s+|$)/g,'$1+OR+').slice (0,-4) === 
'"abc def"+OR+ghi+OR+"klmno pqr"+OR+xyz' 

.

+0

터무니은 추가 +는 OR + 최종 문자열에 – HBP

+1

나는 경우 FON의 $ y를 w는 [^ "] \ 대신 사용하는 것을 놓쳤다 유효합니다. –

+0

아, 또한 var 때문에 str2 = jQuery.trim (filter2) 때문에 뒤쪽 공간에 대해 걱정할 필요가 없다고 생각합니다. –

2

이렇게 할 수도 있습니다.

'"abc def" ghi "klmno pqr"'.match(/"[^"]*"|[^\s]+/g).join("+OR+"); 
0

이 그것을해야 ...

function replaceWhiteSpace(str) 
{ 
    insideAQuote = false; 
    len = str.length 
    for (i=0; i < len; i++) 
    { 
    if (str.charAt(i) == '"') 
    { 
     insideAQuote = !insideAQuote; 
    } 
    else if (str.charAt(i) == ' ' && !insideAQuote) 
    { 
     str = str.substr(0, i) + "+OR+" + str.substr(i+1); 
    } 
    } 
    alert(str); 
} 
+0

돌아 보면, 당신의 제목이 당신이 정규식을 찾고 있다고 말한 것을 보았습니다. 죄송합니다.이 방법은 상관없이 사용할 수 있습니다. – Jmoney38