2016-09-23 3 views
-5

JS regex를 사용하여 내 URL에 문자열을 모두 삭제하려고합니다. 예를 들어 www.myurl/one/two/three/?a=b&c=d 문자열 "three /"다음에 모든 것을 삭제하려고합니다. 이 일치하는 정규식을 작성하는 방법을?자바 정규식 - 문자열 후 모든 것을 일치

+0

당신이 정규식을 사용 TO_ _have 수행 특별히 three/에 일치 할 경우 실제로는

"www.myurl/one/two/three/?a=b&c=d".match(/[^?]+/)[0] 

과 동일 또는인가? 문자열에서 해당 단어의 위치를 ​​찾고 거기에서 잘라내는 것은 쉬운 일이 아닙니다. – vlaz

+0

str.split ('three /') [0] + 'three /'; –

+0

"three"이후의 모든 항목을 삭제 하시겠습니까, 아니면 검색어 매개 변수를 삭제 하시겠습니까? –

답변

0

빠른 방법이 있습니다.

var str = 'www.myurl/one/two/three/?a=b&c=d' 
 

 
var newStr = str.replace(/(.*\/three\/).*/, '$1') 
 

 
alert(newStr)

2

보십시오이 하나

function getPathFromUrl(url) { 
 
    return url.split("?")[0]; 
 
} 
 

 
var url = 'www.myurl/one/two/three/?a=b&c=d'; 
 
var result = getPathFromUrl(url); 
 
alert(result);

+0

그는 3 세 이후로 모든 것을 버리고 싶다고 말했습니다. 그래서이 방법으로도 결과를 얻을 수 있습니다. –

+0

3 세 이후에는 매개 변수 값이 반환 될 함수에 전달할 수있는 매개 변수가 무엇이든 가져옵니다. –

+0

나를 이해시켜 주셔서 감사합니다. 나는 다시 편집했다. 나는 그가 3 후 쿼리 문자열을 원하는 줄 알았는데. 다시 그의 질문을 읽고 편집 된 대답을 읽었습니다. –

0

또는 basicaly 문자열의 방법과 배열 :

var string = "www.myurl/one/two/three/?a=b&c=d"; 
var array = string.split('/'); 
array.pop(); 
var result = array.join("/"); 
console.log(result); //www.myurl/one/two/three 
+1

'three' 다음에 슬래시가 올 경우 이것이 실패합니다. 이것은 완전히 유효한 URL 형식입니다. –

+0

그래서 [[? \ /]'로 나눌 수 있습니다. –

+0

@torazaburo URL에 쿼리 문자열 _and_ 최종 슬래시가 없으면 해당 URL은 실패합니다. – vlaz

1

내장 된 URL 조작 기능을 사용하십시오.

var a = document.createElement('a'); 
 
a.href = "http://www.myurl/one/two/three/?a=b&c=d"; 
 
a.search = ''; 
 
console.log(a.href);

주 :

  1. a 요소의 속성 search 물음표로 시작하는 부분을 말한다.

  2. 여기에 http://이 필요합니다. 그렇지 않으면 URL은 현재 URL에 상대적인 것으로 해석됩니다. 당신은 모든 로, 유지 하시겠습니까 일치 수

    "www.myurl/one/two/three/?a=b&c=d".replace(/\?.*/, '') 
    

    또는 : 당신이 정규 표현식을 사용하는 것을 선호하는 경우

는, 당신은 물음표로 시작하는 모든 것을 지울 수 최대 사용하여 물음표를합니다 :

"www.myurl/one/two/three/?a=b&c=d".match(/.*(?=\?)/)[0] 

당신은 match 이후 [0] 누구의 전나무 배열을 반환해야합니다 t 요소가 전체 일치입니다. 여기 ?=룩 어 헤드입니다.

"www.myurl/one/two/three/?a=b&c=d".match(/.*three\//)[0]