问一下匹配顶级域名的正则表达式写法

sphinger 2009-03-13 03:43:08
比如http://www.csdn.net,
http://news.csdn.net,
http://news.paper.csdn.net.cn
http://adfasdf.111.csdn.net
由于有的只有一个域如.com,有的两个.com.cn
这个除了枚举有什么好的方式来匹配吗?

请用以下形式回答:
Regex urlRegex = new Regex(@"表达式", RegexOptions.Compiled);
多谢!
...全文
1323 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_风中雪狼 2010-04-08
  • 打赏
  • 举报
回复
支持看看
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
^(?i)http://(\w+\.){1,3}[a-z0-9]+$
^匹配开头
(?i)忽略大小写
http://这个不用解释了吧
(\w+\.){1,3}匹配1到3次 XXX.
[a-z0-9]+匹配1个以上字母数字
$匹配结尾
sphinger 2009-03-13
  • 打赏
  • 举报
回复
恩基本符合我的要求了,希望你能给我讲解一下,正则没什么概念,最好逐字的解释下,劳驾啦
sphinger 2009-03-13
  • 打赏
  • 举报
回复
对是验证
yangc_83 2009-03-13
  • 打赏
  • 举报
回复
(\.com){0,1}|((\.com){,1}+(\.cn){0,1})
上面是, .com 可以出现一次或没出现 或者, .com出现1次 .cn可以出现一次或没有出现
你试试
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 sphinger 的帖子:]
比如http://www.csdn.net,
http://news.csdn.net,
http://news.paper.csdn.net.cn
http://adfasdf.111.csdn.net
[/Quote]

[Quote=引用 12 楼 sphinger 的回复:]
http://XXXX.XXXX
http://XXXX.XXXX.XXXX
http://XXXX.XXXX.XXXX.XXXX
其中XXXX只可以是字母数字-_ XXXX并不代表4位代表1位以上,也就是网址最多有4段,最少有2段构成。
[/Quote]

搞不懂你要的是几段。。。反正是{1,3}还是{1,4}你自己看着办吧。
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
Regex urlRegex = new Regex(@"^(?i)http://(\w+\.){1,3}[a-z0-9]+$"); 
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
你是做验证,不是做提取吧?

Regex urlRegex = new Regex(@"^(?i)http://(\w+\.){1,4}[a-z0-9]+$"); 
sphinger 2009-03-13
  • 打赏
  • 举报
回复
可能我说的你没有明白:
http://www.baidu.com.cn.cn.cn.cn.cn 这样的
http://www.baidu.com.这样的
都是不合法的,
一下3种是合法的
http://XXXX.XXXX
http://XXXX.XXXX.XXXX
http://XXXX.XXXX.XXXX.XXXX
其中XXXX只可以是字母数字-_ XXXX并不代表4位代表1位以上,也就是网址最多有4段,最少有2段构成。
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sphinger 的回复:]
引用 8 楼 min_jie 的回复:
C# codeRegex urlRegex = new Regex(@"(?i)http://(\w+\.){1,4}[a-z0-9]+");


试试吧。。看看是否符合你的要求。

依然不对
http://www.baidu.com.cn.cn.cn.cn.cn 这样的
http://www.baidu.com.这样的
都应该验证出来
而且,我意思比较特殊的符号都不应该让输入,但是_-这两个应该可以的
[/Quote]

中文让输吗?

如果可以:
Regex urlRegex = new Regex(@"(?i)https?://([\w-]+\.)+[a-z0-9]+");

如果不可以:
Regex urlRegex = new Regex(@"(?i)https?://([0-9a-z_-]+\.)+[a-z0-9]+");
sphinger 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 min_jie 的回复:]
C# codeRegex urlRegex = new Regex(@"(?i)http://(\w+\.){1,4}[a-z0-9]+");


试试吧。。看看是否符合你的要求。
[/Quote]
依然不对
http://www.baidu.com.cn.cn.cn.cn.cn 这样的
http://www.baidu.com.这样的
都应该验证出来
而且,我意思比较特殊的符号都不应该让输入,但是_-这两个应该可以的
symbol441 2009-03-13
  • 打赏
  • 举报
回复

^(http://)?(\w+\.)+\w+$

止戈而立 2009-03-13
  • 打赏
  • 举报
回复
Regex urlRegex = new Regex(@"(?i)http://(\w+\.){1,4}[a-z0-9]+");

试试吧。。看看是否符合你的要求。
sphinger 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 min_jie 的回复:]
C# codeRegex urlRegex = new Regex(@"(?i)http://(\w+\.){1,3}((com|net)(\.cn)?|cn)\b")



列举出来就行了。
[/Quote]
问题是,我也不能都列出来哦,现在有很多域名,比如.com.cn 还有什么.cc .me 等等。
其实我也不要求太严格的验证有个大概就好
符合这样的:
http://XXXX.XXXX
http://XXXX.XXXX.XXXX
http://XXXX.XXXX.XXXX.XXXX
X的个数与实际不相关,1位以上就好,不该有的符号不能有,比如什么?&等等吧
sphinger 2009-03-13
  • 打赏
  • 举报
回复
自己顶
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
Regex urlRegex = new Regex(@"(?i)http://(\w+\.){1,3}((com|net)(\.cn)?|cn)\b")


列举出来就行了。
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sphinger 的回复:]
还能验证包括:
http://csdn.net, //前面WWW省略
[/Quote]

Regex urlRegex = new Regex(@"(?i)http://(\w+\.){1,3}(com(\.cn)?|cn|net)\b")
止戈而立 2009-03-13
  • 打赏
  • 举报
回复
TRY:

Regex urlRegex = new Regex(@"(?i)http://(\w+\.){2,3}(com(\.cn)?|cn|net)\b",)
sphinger 2009-03-13
  • 打赏
  • 举报
回复
还能验证包括:
http://csdn.net, //前面WWW省略

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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