2012-07-15 2 views
0

현재 도메인을 준수하는 링크 만 구문 분석하는 정규식을 만들고 싶습니다. javascript regex 객체에서 사용할 수있는 {hostname}과 같은 것이 있는지 알고 싶습니다. 그러면 현재 페이지의 특정 도메인에 대한 링크에만 검색이 잠길 것입니다.정규식 자바 스크립트 내 도메인/호스트 이름

예 : 도메인이 www.domain.com 인 경우 해당 도메인으로 시작하는 링크 만 검색합니다. 도메인이 anotherdomain.com 인 경우 특정 도메인으로 시작하는 링크 만 검색합니다. 내 정규식은 더 복잡하지만 현재 도메인으로 대체 될 일종의 전역 변수를 넣을 수 있기를 원합니다.

+0

당신이 코드 당신이 쓴 한 마을? 현재 대답은 "아니오"입니다. – Polyov

+0

아니요.하지만 당신이하려는 일에 대해 더 자세히 이야기 할 수 있습니까? 왜 당신은 정규식과 정규식이 필요합니까? 나는 이것이 더 간단한 방법으로 해결 될 수 있다고 느낀다. –

답변

2

당신은 위치 객체를 통해 현재 페이지의 호스트 이름을 검색 할 수 있습니다

var hostname = window.location.hostname; 

그리고 당신이 당신의 정규식으로 연결하여 그 변수를 사용하여 정규 표현식을 구성 할 수 있습니다

var re = new RegExp("<start of your regex>" + hostname + "<end of your regex>"); 
2

당신에게 호스트 이름을 window.location.hostname에서 가져올 수 있습니다.

그런 다음 호스트 이름에서 잠재적 인 특수 문자를 이스케이프해야합니다.

호스트 이름에는 대개 정규 표현식에서 특수 문자 인 .이 포함되며 특수 문자가 될 수있는 -도 포함될 수 있습니다.

아마도 방어 프로그래밍에 종사하고 정규 표현식에 특수 문자가 될 수있는 모든 것을 탈출하는 것이 가장 좋을 것입니다. Escape string for use in Javascript regex에서이 기능을 사용할 수 있습니다

function escapeRegExp(str) { 
    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); 
} 

을 그리고 당신이 할 수 있습니다 :

var regexpFragment = escapeRegExp(window.location.hostname); 
+0

+1 특수 문자를 이스케이프 처리하기 위해 언급 한 것을 잊어 버렸습니다. – joelrobichaud