2012-07-02 3 views
-1

URL의 유효성을 검사하는 정규식이 필요합니다. 나는이 하나 발견cgi로 URL 유효성 확인

"^(http(?:s)?\:\/\/[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+\.[a-zA-Z]{2,4}(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$" 

을하지만 내 문제는 일반 URL을 게다가,이 같은 "HTTP (S)"하지 않고, .cgi로 경로를 허용해야한다는 것입니다 :

123.45.678.543:30/ cgi-bin/blah/blah.cgi

위의 표현에 어떻게 추가 할 수 있는지 알아 주시겠습니까? 감사합니다. .

+0

예시 URL은 유효하지 않지만 CSI Miami에서 본 것 같습니다. regex는 또한 IPv6 리터럴을 사용하여 합법적 인 URL을 거부합니다. – Flexo

+0

하지만 그것은 어떻게 든 내게 효과가 있습니다 ... 내 말은, URL의 유효성을 확인하기 위해서입니다. 그것에 대해 무엇이 잘못되었는지 말할 수 있습니까? –

+1

옥텟이 255를 넘는 IP 주소를 사용할 수 없습니다. 제가하려고했던 점은 정규 표현식을 사용하는 것은 정말 어렵고 나쁜 것들이 많이 있다는 것입니다. 누군가 작동하는 사람이라도 누군가가 유효하지 않은 도메인이나 404/403 등을 반환하는 링크를 제공 할 수 있습니다. URL이 유효한지 정말로 확인하는 것이 중요하다면 전화를 걸어보십시오. 실제 HEAD 요청을 만들어 작동하는지 확인할 수 있습니다. – Flexo

답변

2

내가 게시 한 RegExp가 모든 유형의 URL의 유효성을 검사 할만큼 일반적이지 않은 것 같습니다. 어쩌면 좀 더 정교한 것을 찾으려면 What is the best regular expression to check if a string is a valid URL? (특히 @ eyelidlessness의 대답)을보십시오.

URL의 문제는 일부 cgi 파일을 가리키는 것이 아닙니다. 적어도 (? 경우에 얘기) (아마) - -

http://123.45.678.543:30/cgi-bin/blah/blah.cgi 

할 IP 주소의 숫자가 최대 255 수 있다는 게다가 문제는해야한다는 것입니다. 이러한 수정 작업을하더라도 여전히 게시 한 RegExp를 적용 할 자격이 없지만 RegExp의 결함에 대한 단 하나의 힌트 일뿐입니다.

+0

고마워, 나는 그 모든 것을 고쳤다. –

+0

지금은 의미가 있습니다. –