寻:解析一个顶级域名URL的更优正则表达式! 自己找找:http://www.regexlib.com/DisplayPatterns.aspx?cattabindex=1&categoryId=2 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $str[] = "www.csdn.com.cn";$str[] = "www.csdn.net";$str[] = "www.csdn.cn";$str[] = "www.csdn.c";$str[] = "http://www.csdn.com.cn";$str[] = "http://www.csdn.net";$str[] = "http://www.csdn.cn";$str[] = "http://www.csdn.c";$str[] = "http://www.csdn.abcdefg";$str[] = "http://www.csdn.com.cn.net";foreach($str as $key=>$val){ $key++; if(preg_match('/^(http:\/\/)?www\.[\d\w]{2,}(\.[\w]{2,6}){1,2}$/i',$val)) { echo "ok<br>"; } else { echo "第 $key 个not ok<br>"; }} 恩,我修正一下我的语言表达,准确的说应该是寻求“更完善、更严密”的正则表达式,要求能达到与IE浏览器同等的解析能力,刚做了点小修改,现在的表达式为:/^([hH]{1}[tT]{2}[pP]{1}://)?[wW]{3}\.[0-9a-zA-Z][0-9a-zA-Z-]{0,25}((\.[a-zA-Z]{3,4})|(\.[a-zA-Z]{2})){1,2}$/附加的条件是:1、和IE浏览器一样大小写通用;2、严格遵照Internet国际顶域名、各国国内顶级域名的命名规则;3、凡符合此正则表达式的URL可以真实存在;4、凡不符合此正则表达式的URL不可能真实存在;5、真实存在的URL(顶级域名)必能符合此正则表达式;目标:1、能检验该域名是否真实存在可行;2、可用于比如域名注册机构所用;目前没有实现的:1、国际域名最长26个字符,国内域名最长20个字符(目前只统一限制为最长26个字符);2、不能检验域名后缀是否存在,不能检验代表国别的域名后缀是否存在(目前只能限定后缀字符个数,还不支持.museum域名);-----------------------------回: ustb(偶然) 域名命名规则中是不允许存在“_”的,但允许存在“-”; WWW是多余的,这是主机名,不是域名。如果你要的实际上不是域名模式,而是主机+域名的模式,你还应该考虑多级解析。你说的两个没有实现的东西,我看是你怕麻烦吧?不怕麻烦你一定能够搞定的。另外,要实现你的目标,应该借助WHOIS。找找资料看看吧,我没有做过,帮不了你了。——资料找到了共享哦,共同进步嘛! 域名后缀国别信息大全http://www.wangjianran.com/you/203.htm真多! 今天的最后成果:-----------------------------------------<?php$str[] = "www.csdn.com.cn";$str[] = "http://www.cs-dn.com.cn";$str[] = "hTTP://WWw.csdn.net";$str[] = "www.csdn.cn";$str[] = "www.csdn-.cn";$str[] = "www.coM.cN";$str[] = "Http://www.csdn.cn";$str[] = "http://www.csdn.co.cn";$str[] = "http://www.csdn.info.jp";$str[] = "-------↑ Right ↓ Error--------";$str[] = "www.c_sdn.com.cn";$str[] = "www._csdn.net";$str[] = "www.-csdn.cn";$str[] = "www.csdn.c";$str[] = "www.csdn..";$str[] = "www.csdn.";$str[] = "www.csdn"; //未解决$str[] = "http://www.csdn.cn.co";$str[] = "http://www.csdn.c";$str[] = "http://www.csdn.abcdefg";$str[] = "http://www.csdn.com.cn.net";$str[] = "htp://www.csdn.ciii.pp";$str[] = "http://www.csdn.ciii.pp";$str[] = "http://www.csdn.com.net";$pattern = '/^(http:\/\/)?www\.[0-9a-z][0-9a-z-]{0,25}((\.(aero|biz|cc|co|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|tv))?(\.(af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za))?){1}$/i';foreach($str as $key=>$val){ $key++; if(preg_match($pattern,$val)) echo "<br><font color=green>Right!</font> ".$val; else echo "<br><font color=red>Error!</font> ".$val;}?> 关于Apache2.2服务器配置多站点的疑问 积分严重缺乏,谁给我一点?需要下载很多资料准备毕业设计! js调用php函数--困难问题。。。 PHP里怎么显示tif文件? 正则表达式的问题 请教一个正则问题这么写问什么匹配不对 PHP的NCR编码问题 PHP书籍竟然从书店撤柜了!? 知道两个时间,这样的日期结果如果得出来的. MYSQL的分组排序关题。 怎么做到PHP5下面MySQL和MySQLi的共存? 安装phpMyAdmin管理MYSQL,登录后,有如下提示,请问如何设定
$str[] = "www.csdn.net";
$str[] = "www.csdn.cn";
$str[] = "www.csdn.c";
$str[] = "http://www.csdn.com.cn";
$str[] = "http://www.csdn.net";
$str[] = "http://www.csdn.cn";
$str[] = "http://www.csdn.c";
$str[] = "http://www.csdn.abcdefg";
$str[] = "http://www.csdn.com.cn.net";
foreach($str as $key=>$val)
{
$key++;
if(preg_match('/^(http:\/\/)?www\.[\d\w]{2,}(\.[\w]{2,6}){1,2}$/i',$val))
{
echo "ok<br>";
}
else
{
echo "第 $key 个not ok<br>";
}
}
要求能达到与IE浏览器同等的解析能力,刚做了点小修改,现在的表达式为:/^([hH]{1}[tT]{2}[pP]{1}://)?[wW]{3}\.[0-9a-zA-Z][0-9a-zA-Z-]{0,25}((\.[a-zA-Z]{3,4})|(\.[a-zA-Z]{2})){1,2}$/附加的条件是:
1、和IE浏览器一样大小写通用;
2、严格遵照Internet国际顶域名、各国国内顶级域名的命名规则;
3、凡符合此正则表达式的URL可以真实存在;
4、凡不符合此正则表达式的URL不可能真实存在;
5、真实存在的URL(顶级域名)必能符合此正则表达式;目标:
1、能检验该域名是否真实存在可行;
2、可用于比如域名注册机构所用;目前没有实现的:
1、国际域名最长26个字符,国内域名最长20个字符(目前只统一限制为最长26个字符);
2、不能检验域名后缀是否存在,不能检验代表国别的域名后缀是否存在(目前只能限定后缀字符个数,还不支持.museum域名);-----------------------------
回: ustb(偶然)
域名命名规则中是不允许存在“_”的,但允许存在“-”;
如果你要的实际上不是域名模式,而是主机+域名的模式,你还应该考虑多级解析。
你说的两个没有实现的东西,我看是你怕麻烦吧?不怕麻烦你一定能够搞定的。
另外,要实现你的目标,应该借助WHOIS。找找资料看看吧,我没有做过,帮不了你了。
——资料找到了共享哦,共同进步嘛!
http://www.wangjianran.com/you/203.htm
真多!
-----------------------------------------<?php$str[] = "www.csdn.com.cn";
$str[] = "http://www.cs-dn.com.cn";
$str[] = "hTTP://WWw.csdn.net";
$str[] = "www.csdn.cn";
$str[] = "www.csdn-.cn";
$str[] = "www.coM.cN";
$str[] = "Http://www.csdn.cn";
$str[] = "http://www.csdn.co.cn";
$str[] = "http://www.csdn.info.jp";
$str[] = "-------↑ Right ↓ Error--------";
$str[] = "www.c_sdn.com.cn";
$str[] = "www._csdn.net";
$str[] = "www.-csdn.cn";
$str[] = "www.csdn.c";
$str[] = "www.csdn..";
$str[] = "www.csdn.";
$str[] = "www.csdn"; //未解决
$str[] = "http://www.csdn.cn.co";
$str[] = "http://www.csdn.c";
$str[] = "http://www.csdn.abcdefg";
$str[] = "http://www.csdn.com.cn.net";
$str[] = "htp://www.csdn.ciii.pp";
$str[] = "http://www.csdn.ciii.pp";
$str[] = "http://www.csdn.com.net";$pattern = '/^(http:\/\/)?www\.[0-9a-z][0-9a-z-]{0,25}((\.(aero|biz|cc|co|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|tv))?(\.(af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za))?){1}$/i';foreach($str as $key=>$val)
{
$key++;
if(preg_match($pattern,$val))
echo "<br><font color=green>Right!</font> ".$val;
else
echo "<br><font color=red>Error!</font> ".$val;
}
?>