2012-06-04 4 views
0

javascript의 URL 경로 (도메인을 포함하지 않음)에서 파일 이름을 제거하고 싶습니다.URL의 파일명을 일치시키는 정규식

경로는 다음과 같이 보일 것이다 :

/something/myfile.html?d=var 

또는

/something/myfile.html 

이 원하는 출력 :

때로는 URL은 다음과 같이 전달받을
/something/ 

:

/something/else 

나는 '기타'를 제거하고 싶지 않습니다. 즉, 마지막 슬래시 뒤에 모든 것을 제거하는 정규식은 필자의 경우에는 작동하지 않는다.

EDIT : 명확히하기 위해 나는 파일 이름을. 위에서 본 슬래시 뒤에.

+3

'else'는 유효한 파일 이름입니다. "파일"이라고 생각하는 것을 정의하십시오. – zebediah49

+0

실제로 URL은 무엇을 의미하는지 (myfile.html은 파일을 나타낼 필요가 없음) 절대 확신 할 수 없습니다. urls은 실제로 아무것도 아닙니다 : urls. 그들이 어떻게 봉사하는지는 다른 질문입니다. – kratenko

+0

URL의 마지막 부분에 파일 형식 확장명이 없으면 포함시키지 말라는 의미입니다. 확장자가있는 파일 만보기를 원합니다. 이게 맞습니까? @greatwitenorth? –

답변

2

는 다음과 같은 정규식 패턴과 일치하는 것을 제거

[^/?]*\.[^/?]*(\?.*)?$ 

또는 정말

[^/?#]*\.[^/?#]*(\?.*)?(\#.*)?$ 

이 남아 있는지에 decodeURIComponent를 사용하는 것을 잊지 마십시오.

+0

옙 그랬습니다. 필자가해야 할 일은 2 개의 슬래시를 이스케이프 처리하는 것뿐이었습니다. [^ \ /? #] * \ [^ \ /? #] * (\?. *)? (\ #. *))? $ – greatwitenorth

+0

당신은 정규식 패턴과 정규 표현식 개체 생성자 (단순히'/'이스케이프 된 패턴이 아닌)를 혼동하고 있습니다. – ikegami

+0

사실을 정리해 주셔서 감사합니다. – greatwitenorth

관련 문제