2011-11-07 3 views
1

로 이동 window.location.href을 판사로 만드는 방법은?js window.location.href가 일치하지 않으면

window.location.href?search= 일치하지 않을 경우, http://localhost/search?search=car

내 코드에 현재의 URL를 점프가 작동하지 않을 수 있도록, 또는 내가 판사를 만들기 위해 indexOf를 사용해야합니까? 감사.

if(!window.location.href.match('?search='){ 
    window.location.href = 'http://localhost/search?search=car'; 
} 
+0

당신은')'권리 – Neal

답변

5

몇 가지 : 당신이 닫는 괄호를 놓치고, 당신은 탈출해야합니까? 정규 표현식에 중요하기 때문에./\? search =/또는 '\? search ='를 사용하십시오.

// Create a regular expression with a string, so the backslash needs to be 
// escaped as well. 
if (!window.location.href.match('\\?search=')) { 
    window.location.href = 'http://localhost/search?search=car'; 
} 

또는

// Create a regular expression with the /.../ construct, so the backslash 
// does not need to be escaped. 
if (!window.location.href.match(/\?search=/)) { 
    window.location.href = 'http://localhost/search?search=car'; 
} 
+0

를, 부주의'닫는 paren' 누락, 주요 결과는 탈출'입니까? '덕분에 누락되었습니다. –

+1

@ Scott A : 언급 한 내용 : 답변에서/\? search =/'\? search ='를 사용하지만 첫 번째 예에서는 '\\? search ='why \ 'search가 아닌'? ?? – Tarik

+1

@Tarik 첫 번째 예제에서 정규식 자체에는 백 슬래시가 필요하지만 문자열에서 백 슬래시를 나타내려면 백 슬래시도 이스케이프해야합니다. 다른 백 슬래시를 사용해야합니다. 따라서 match() 함수로 보내면 \\는 \가됩니다. 두 번째 예제에서 /.../ 구조는 정규 표현식을 직접 생성하며, 문자열을 처음부터 통과하지 않으므로 이스케이프 할 필요가 없습니다. –