2011-01-02 8 views
2

URL을 텍스트로 일치시키고 연결 한 후 호스트 도메인 이름 또는 IP 주소 만 사용자에게 표시해야합니다. JavaScript로 어떻게 진행할 수 있습니까?JavaScript로 URL 부분 가져 오기

감사합니다.
추신 : 제발 약 this; 정규 표현식 그래서 당신은 정규 표현식를 사용하지 않으려는 경우가 http://google.com

+5

"정규식이 너무 유사하기 때문에 일치하지 않습니다."...이 잘못된 가정을 어떻게 수정했는지 확실하지 않습니다. 그들은 이상적인가? 아니요,하지만 * 올바른 * 정규 표현식은 엔진이 아닌 한 버그가 없습니다. –

+0

'http : // google.com'은 URL 조각 일뿐입니다. 그것은 권위 영역 안에서 무엇이 원하는지를 기술 할 것이 없습니다. (브라우저는 보통 루트 리소스 인'/'를 요구함으로써 이에 반응하지만, 이는 단지 대회 일뿐입니다.) –

+0

"그 페이지에서 주어진 정규식"을 의미했습니다. – seriousdev

답변

2

일치하지 않을 수 있습니다 버그가, 당신은 indexOf 등 대신 같은 것들을 사용해야합니다. 예를 들어, 모든 요소의 텍스트에서 ": //"을 검색하고 그 앞에있는 비트가 프로토콜 (또는 "체계")처럼 보이면 유효한 URI 문자 인 다음 문자를 가져옵니다 (RFC2396). 결과가 점 또는 물음표로 끝나면 점 또는 질문을 제거하십시오 (아마도 문장을 끝내기도합니다). 정말 말할 필요가 없습니다.

업데이트 : 아, 편집 한 내용에서 정규 표현식에 문제가없는 것으로 보입니다. 정규식에는 문제가없는 것으로 보입니다. 공정하다.

이 잘 정규 표현식 모든 그것을해야 더 많은 작업이 을하려고 노력하지만, 솔루션의 도움이됩니다 일환으로 정규 표현식을 사용하여 그 장소 중 하나가 될 수 있습니다. 계획 부분은 0 개 이상의 알파, 자리를 가질 수 다음 알파로 시작해야하기 때문에 예를 들어,

/[a-zA-Z][a-zA-Z0-9+\-.]*:\/\// 

은 ... 음, +는 URL의 시작 찾을 수있는 유용한 방법이 될 수 있습니다 , - 또는 (section 3.1)보다 앞에 .입니다.

+0

하지만 호스트 이름을 추출해야합니다. – seriousdev

+0

@sexyprout : 좋습니다. 그게 RFC의 나머지 부분입니다. (호스트 이름은 이스케이프 된 문자를 올바르게 처리한다면 호스트 이름은 매우 간단합니다. 즉, 이스케이프 된 문자는': // '다음과 첫 번째 이스케이프 처리되지 않은'/'또는':' (이스케이프 처리되지 않은'/'또는':')가 없으면 URL 끝 문자와 같은 end-of-like 문자를 반환합니다. –