2011-05-11 7 views

답변

17

의 끝 슬래시 문자를 일치 0에서 [\s\S]

\/ 수단의 무제한 어디서나 일치한다는 것을 의미 경로에서을 입력하면 /에 문자열을 나눌 수 있습니다. pop() :

var url = "http://blablab/test"; 
alert(url.split("/").pop()); 
//-> "test" 

가, 경로의 개별 부분을 지정 /에 분할 항목에 액세스 할 수 브래킷 표기법을 사용하려면

var url = "http://blablab/test/page.php"; 
alert(url.split("/")[3]); 
//-> "test" 

또는, 모든 세 번째 슬래시 후 원하는 경우, split(), slice()join() :

var url = "http://blablab/test/page.php"; 
alert(url.split("/").slice(3).join("/")); 
//-> "test/page.php" 
+0

네 번째 슬래시 인'pop'이 있으면 마지막 슬래시 뒤에 모든 것을 가져오고'[3]'은 세 번째와 네 번째 슬래시 사이의 모든 것을 가져옵니다. –

+0

@ 조지 : 기록 업데이트 됨. –

+1

답장을 보내 주셔서 감사합니다.이 답변은 noobish 질문에 도움이되었습니다.) – Frank

2
var string = 'http://blablab/test' 
string = string.replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'') 
alert(string) 

이것은 정규 표현식입니다. 나는 정규식 /[\s\S]*\//

/ 줄 바꿈과 일치하지 않는 .와 혼동하지, 정규식 [\s\S] 공백 또는 비 공백 (아무것도)을 의미

의 시작입니다

아래에 설명 할 것 (.[^\r\n]과 같습니다).

* 우리가

마지막 /는 마지막 항목을 얻을 수있는 정규 표현식

+1

은 테스트를 위해 바이올린을 만들었습니다. http://jsfiddle.net/DSzJL/ –

+0

정규 표현식을 대체하는 것이 아마도 가장 효율적인 접근 방법이 아닙니다. –

+0

나도 알아, 나는 정규식 할당량을 좋아하지만 다른 답변을 upvote 않았다. –

2

은 한 라이너 다음을 만들 수 있도록하려면

str = str.substr(str.indexOf("/",str.indexOf("/",str.indexOf("/")+1)+1)+1); 
0

당신은 부분 문자열을 분할하고 세 번째 슬라이스 한 후 모든 부분을 반환 slice를 사용하는 split를 사용할 수 있습니다.

var str = "http://blablab/test", 
    arr = str.split("/"); 
arr = arr.slice(3); 
console.log(arr.join("/")); // "test" 

// A longer string: 
var str = "http://blablab/test/test"; // "test/test"; 
0

당신은 같은 정규 표현식을 사용할 수이 하나

'http://blablab/test'.match(/^(?:[^/]*\/){3}(.*)$/); 
// -> ['http://blablab/test', 'test] 

문자열의 match 방법이 경우에, 당신이 중 하나를 전체 입력을 전체 경기의 배열을 (제공, 및 캡처 그룹 (우리는 첫 번째 캡처 그룹을 원한다)) 또는 null.따라서, 일반적으로 사용하기 위해 당신은 배열의 1 번째의 요소를 뽑아 필요는 null 일치가 발견되지 않은 경우 :

var input = 'http://blablab/test', 
    re = /^(?:[^/]*\/){3}(.*)$/, 
    match = input.match(re), 
    result = match && match[1]; // With this input, result contains "test" 
관련 문제