2010-11-30 9 views
7

은 내가 만든이 :URL 정규식 유효성 검사

/^(http[s]?://){0,1}(www.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1} 

와 발리로 체크하지만 내 페이지에서 작동하지 않습니다 :

var re = /^(http[s]?://){0,1}(www.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}; 
if (!re.test(url)) { 
    alert("url error"); 
    return false; 
} 

내가이 오류를 얻을

Webpage error details 

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) 
Timestamp: Tue, 30 Nov 2010 14:23:10 UTC 


Message: Expected ')' in regular expression 
Line: 781 
Char: 23 
Code: 0 
URI: http://************************* 
+0

어떤 유효성 검사기를 사용 했습니까? JS와 관련이 있습니까? 정규 표현식은 환경에 따라 다릅니다. –

+0

나는 js one을 사용했다. .. 나는 무엇이 잘못되었는지 모른다. –

답변

18

특수 문자 (/)와 . (www 이후)을 이스케이프 처리해야합니다. 경우) 및 AT & T 누락과 같이 / 후행 :

var re = '~(https?)://)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}\.?~'; 

그러나 :

var re = /^(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}/; 
if (!re.test(url)) { 
    alert("url error"); 
    return false; 
} 
+0

나는 그것을 놓쳤다! :-) –

+0

'http : // localhost : 8000/memcache? message = 캐시 + % 2C + 모든 + 키 + 삭제됨 '과 함께 잘못된 점은 무엇입니까? –

+0

유효하지 않음 http://81.201.51.112:50505/abc/xy.xml – Gogol

0

으로 닉은 그렇게 당신의 정규식이 될 것입니다 다른 delimitor을 사용하지 않는 \.을 탈출해야했다 정규 표현식은 다음과 같은 URL과 일치합니다.

http://....aa. 
1

질문이 접수되었지만 게시 할 예정입니다.

그 정규식은 여전히 ​​불완전합니다.

http://www.-1-.de은 유효한 도메인 이름이 아니지만 테스트에 합격합니다.

는 여기에 내가 무엇을 사용 :

~^ 
(?:ht|f)tps?:// 

(?:[a-z0-9] (?:[a-z0-9-]*[a-z0-9])?  \.)* 

(?:[a-z0-9][a-z0-9-]{0,62}[a-z0-9]) 
(?:\.[a-z]{2,5}){1,2} 

$~ix 

는 HTTP (S), FTP (들) 및 .co.uk에서 TLD를 등을 다룹니다. 또한 길이가 1 자일 수있는 하위 도메인 (모바일 버전의 웹 페이지에서는 m.example.com)을 처리하지만 m-.example.com은 허용되지 않습니다.

.pro TLD에는 도메인 이름으로 4 자 이상이 필요하기 때문에 일부는 정규식의 완전성을 거부 할 수 있습니다. ;-)

또한 IDN 도메인 이름은 변환 후 (예 : "xn--"형식) 내 정규식을 전달합니다.

+0

어떻게 사용합니까? – user3808307

0

그냥 경우에 당신은 URL이 실제로 존재하는지 알고 싶어

function url_exist($url){//se passar a URL existe 
    $c=curl_init(); 
    curl_setopt($c,CURLOPT_URL,$url); 
    curl_setopt($c,CURLOPT_HEADER,1);//get the header 
    curl_setopt($c,CURLOPT_NOBODY,1);//and *only* get the header 
    curl_setopt($c,CURLOPT_RETURNTRANSFER,1);//get the response as a string from curl_exec(), rather than echoing it 
    curl_setopt($c,CURLOPT_FRESH_CONNECT,1);//don't use a cached version of the url 
    if(!curl_exec($c)){ 
     //echo $url.' inexists'; 
     return false; 
    }else{ 
     //echo $url.' exists'; 
     return true; 
    } 
    //$httpcode=curl_getinfo($c,CURLINFO_HTTP_CODE); 
    //return ($httpcode<400); 
} 
0

는 오랜 연구 후 나는이 등록 식을 구축 할 수 있습니다. 다른 사람들에게도 도움이되기를 바랍니다 .......

url = 'https://google.co.in'; 
    var re = /[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/; 
    if (!re.test(url)) { 
    alert("url error"); 
    return false; 
}else{ 
alert('success') 
}