求可以用的匹配域名的正则表达式

asp2001_1 2014-06-09 04:45:14
上周在baidu上花了2个小时 搜到一个匹配域名的正则表达式 很好用
今天来 改程序 把那个代码覆盖掉了
然后再也想不起是用什么关键词搜到的
历史记录中也没这个页面 因为是搜索结果页面上的最佳答案 直接复制的 没有打开网页


刚才又找了2个小时 99%都是不完善代码 比如简单的用a-z/A-Z/0-9去匹配
还有所有以http/https/ftp开头的代码 都不是我想要的

要求匹配
http://www.csdn.net
http://csdn.net
www.csdn.net
csdn.net
cs-dn.net
csdn.net:8080
abc.123.csdn.net

但不要求匹配
csdn.net/xxx (后面部分不要)
...全文
744 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
asp2001_1 2014-06-09
  • 打赏
  • 举报
回复
而一篇文章中 可能包含10个不同格式的域名 都要找出来
asp2001_1 2014-06-09
  • 打赏
  • 举报
回复
(?:https?|ftp)\:\/\/(?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?(?:((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?:\[[^\]]*\]))(?:\:[0-9]*)?)(?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*(?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?(?:\#(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)? 测试了一下 这个代码 可以找到 http://开头的域名 只是会出现 http://www.csdn 这样的错误 但不会出现 http://www.csdn.net; 我简单的把http部分去掉 代码改为 (?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,;\=:]|%[0-9a-f]{2,2})*\@)?(?:((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?:\[[^\]]*\]))(?:\:[0-9]*)?)(?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*(?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?(?:\#(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)? 可以找到带和不带http的全部域名 但会出现 http://www.csdn.net; 这样错误
asp2001_1 2014-06-09
  • 打赏
  • 举报
回复
引用 4 楼 snfqbujj 的回复:
[quote=引用 3 楼 u014726793 的回复:] 这段代码 还把 http://www.csdn 误认为域名了
难道你是判断友情链接? 要不然怎么会做这种判断呢,因为这种域名压根就不存在。[/quote] 是从某一篇文章中 读出其中包含的所有域名 然后判断这些域名 是否在黑名单上
snfqbujj 2014-06-09
  • 打赏
  • 举报
回复
<% response.write getdomain("www.aaa.hk") & "<br />" response.write getdomain("blog.aaa.hk") & "<br />" response.write getdomain("mscga.blog.aaa.hk") & "<br />" function getdomain(byval dom) ’ 返回空则表示域名不复合域名根要求 dim i,ext,exts exts = "com.cn,net.cn,org.cn,hk.cn,com,net,cn,hk" ’ 复根在前,单根在后 ext = split(exts,",") for i = 0 to ubound(ext) if lcase(ext(i)) = right(lcase(dom),len(ext(i))) then dim dom_ext,dom_pre dom_ext = lcase(ext(i)) dom_pre = split(left(dom,len(dom)-len(dom_ext)-1),".") getdomain = dom_pre(ubound(dom_pre)) & "." & dom_ext exit function end if next getdomain = "" end function %>
snfqbujj 2014-06-09
  • 打赏
  • 举报
回复
引用 3 楼 u014726793 的回复:
这段代码 还把 http://www.csdn 误认为域名了
难道你是判断友情链接? 要不然怎么会做这种判断呢,因为这种域名压根就不存在。
asp2001_1 2014-06-09
  • 打赏
  • 举报
回复
这段代码 还把 http://www.csdn 误认为域名了
snfqbujj 2014-06-09
  • 打赏
  • 举报
回复
‘1------------------------------------------------------ url=request.servervariables("SERVER_NAME") response.write mid(url,Instr(url,".")+1,len(url)) ’2------------------------------------------------------ Dim ServerName1, ServerName2, iCount ServerName1 = Split(Request.ServerVariables("SERVER_NAME"), ".") iCount = UBound(ServerName1) ServerName2 = ServerName1(iCount-1) & "." & ServerName1(iCount) response.Write(ServerName2)
asp2001_1 2014-06-09
  • 打赏
  • 举报
回复
引用
"(?:https?|ftp)\:\/\/(?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?(?:((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?:\[[^\]]*\]))(?:\:[0-9]*)?)(?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*(?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?(?:\#(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?"
找了一个还算能用的 是以http开始的(当然可以去掉这部分) 但还是无法识别域名后面带标点符号的 比如 http://csdn.net; 把;也算域名了

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧