寻:解析一个顶级域名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;}?> #!/usr/bin/php 如何不显示在网页中 请教一个关于PHP工程师的问题 用ASP.NET要用到C#或VB.那用PHP开发呢?要用到什么语言? 获取一个值的情况下,用mysql_result会比较快吗? 关于PHP中多重引用的一种解决方法 别写程序了,都去办培训班吧 php如何获取终端提交的content内容 请问怎样编写??? 请问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;
}
?>