高分求一域名的正则表达式

jackymi 2007-03-29 09:15:47
test.com
www.test.com
www.test.com.cn
要求只能通过以上三种类型的域名(当然不会只有com和cn类型,所以最后的后缀不作限制,test和域名字符长度不能超过64)
...全文
360 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2007-03-29
  • 打赏
  • 举报
回复
一个汉字为两个字符来计算长度的,在正则中,如果只出现3、5个汉字还可以处理,数量多,如你的需求中最大为32个,要考虑的情况实在太多,那几乎是不可能完成的任务了,所以当出现中英文混合,而中文按两个字符来计算时,判断长度不在正则中,而是在程序中判断
jackymi 2007-03-29
  • 打赏
  • 举报
回复
限制长度 加到哪儿?

这样写 好像限制不起作用

^([a-zA-Z0-9]+\.)?(?=.{1,2})[\w-\u4e00-\u9fa5]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$
-过客- 2007-03-29
  • 打赏
  • 举报
回复
test不能超过64个字符,中文的话就是不能超过32个字
--------------------------
理论上正则可以做到,但也仅存在于理论上而已,如果你是用在验证控件中,不要想着用正则来做这件事,用正则验证规则,用程序来验证长度

如果test部分允许字母,数字,中文,_和-,那么,用下面的验证规则

^([a-zA-Z]+\.)?[\w-\u4e00-\u9fa5]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$

另外www部分是否允许数字,上面为不允许,下面为允许,同时允许_和-

^([\w-]+\.)?[\w-\u4e00-\u9fa5]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$

更严谨一点的,就是www部分不允许出现中文,可以分别用下面的两个代替
^(?![^\.]*?[\u4e00-\u9fa5][^\.]*?\.)([a-zA-Z]+\.)?[\w-\u4e00-\u9fa5]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$
^(?![^\.]*?[\u4e00-\u9fa5][^\.]*?\.)([\w-]+\.)?[\w-\u4e00-\u9fa5]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$
jackymi 2007-03-29
  • 打赏
  • 举报
回复
^(?=.{1,64})([a-zA-Z]+\.)?[a-zA-Z]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$

这个正则 好像是数字不能输入 0--9也是在允许范围之内的
jackymi 2007-03-29
  • 打赏
  • 举报
回复
lxcnn兄

www.test.com <---里面的test不能超过64个字符,当然test还可以变为中文(中文的话就是不能超过32个字) --->www.测试.com

leixueqiyi 2007-03-29
  • 打赏
  • 举报
回复
Regex regex = new Regex(@"^([\w-\.]+)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
bool blnCheck = regex.IsMatch("你的dondong");
-过客- 2007-03-29
  • 打赏
  • 举报
回复
test和域名字符长度不能超过64)
----------------
没太明白这个所指的是哪部分的长度,另外数字以及下划线是否允许

试下,这是总长不超过64的,暂进未加入数字和下划线,看看是否有不符合的情况,如果有,给出实例,我再看下

^(?=.{1,64})([a-zA-Z]+\.)?[a-zA-Z]+\.[a-zA-Z]+(\.[a-zA-Z]+)?$
jackymi 2007-03-29
  • 打赏
  • 举报
回复
up

110,567

社区成员

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

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

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