我做到了:
/^(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 :(得分:24)
在这种情况下,您必须转义特殊字符/
和.
之后的www
,并将丢失的尾随/
,如下所示:
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;
}
答案 1 :(得分: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(s)和.co.uk TLD等。还包括子域名,其长度可以为1个字符(移动版网页为m.example.com
),但不允许m-.example.com
。
肯定有些人可能会反对正则表达式的完整性,因为.pro
TLD要求至少4个字符作为域名。 ; - )
此外,IDN域名只会在转换后通过我的正则表达式(即以“xn--”格式)。
答案 2 :(得分:0)
正如尼克所说,你必须逃离\
和.
,除非你使用另一个分隔符,所以你的正则表达式会变成:
var re = '~(https?)://)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}\.?~';
但请注意,您的正则表达式将匹配网址:
http://....aa.
答案 3 :(得分:0)
万一你想知道网址是否真的存在:
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);
}
答案 4 :(得分:0)
经过长时间的研究,我构建了这个reg表达式。我希望它也会帮助别人.......
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')
}
答案 5 :(得分:0)
var regForUrl = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if (!regForUrl.test(url)) {
alert('Invalid URL-- missing "http://" or "https://"');
}