2012-08-03 2 views
0

정규식을 작성하는 방법을 모르겠지만 사용중인 프로그램 중 하나에서 localhost url을 유효하게해야합니다. 이 프로그램이 URL의 유효성을 검사하는 데 사용하는 정규식입니다 :PHP 정규식에 localhost를 추가하는 방법?

preg_match ('/^https?:\/\/(([a-z0-9-]+\.)+[a-z]{2,6}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(:[0-9]+)?(\/?|\/\S+)$/iu', $url) 

내 지역 웹 사이트의 루트 URL 그것을 검증하는 방법을, http://localhost/입니까?

답변

2
정규 표현식은 일부 지역에서 분할 할 수 있습니다

:

https?:// 
(
    ([a-z0-9-]+\.)+[a-z]{2,6} 
    |\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 
) 
(:[0-9]+)? 
(/?|/\S+) 

유효한 URL 집합에 localhost를 추가하려면 프로토콜 뒤에 양쪽 개괄 대괄호 사이에 localhost|을 추가하기 만하면됩니다.

+0

주의 할 점 : regexp는 내부 네트워크 주소로'server'를 사용하는 것과 같이 IPv6 URL이나 다른 URL을 허용하지 않습니다. –

+0

내가 사용하는 프로그램은 웹 사이트에서 비디오 또는 이미지를 가져 오는 것입니다. 저자가 일부 URL을 제외시키기 위해 몇 가지 제한 사항을 추가했는지 여부는 알 수 없습니다. FILTER_VALIDATE_URL (으)로 변경하는 것이 안전한지 여부는 알 수 없습니다. 나에 대한 제안이 있니? – Jenny

+0

프로젝트를 결정할만큼 프로젝트를 잘 모릅니다. 그러나 일반적으로 특정 확장을 사용할 수있는 한 더 좋은 아이디어 일 수 있습니다. –

4

이미 IPv4 주소에 대한 옵션이 표시되어 있으므로 localhost에 대한 또 다른 옵션이 있습니다.

체인 이후, ) 바로 앞에 |localhost을 추가하십시오.

4

난 그냥 패턴의 시작 옵션으로 로컬 호스트를 추가 할 것, 그래서 그것의 시작은 다음과 같습니다

preg_match('/^https?:\/\/(localhost|([a-z0-9-]+\.)+[a-z]{2,6} (the rest as before) 
관련 문제