博主在写短网址的时候,想让用户可以使用自己的域名,这得做个验证,总不能什么东西都能提交~
遂手撕了如下正则:
^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$
这个正则可以匹配:
1、子域名:也就是 sub.example.com
2、根域名:也就是example.com
解析
1、^(?: ... )+$
:整个正则表达式的开始和结束,确保匹配整个字符串。
2、[a-zA-Z0-9]
:域名的字符必须以字母或数字开头。
3、(?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?
:后续字符可以是字母、数字或短横线,短横线不能出现在开始或结束的位置,且最大长度为63个字符(这是域名的一部分长度限制)。
4、\.
:点(.
)用来分隔不同的域名部分。
5、[a-zA-Z]{2,}
:顶级域名部分,必须至少由两个字母组成(例如 .com
、.cn
、.net
、.jp
)。
需要注意的是
1、域名的长度我没做判断,最长应该是253个字符
2、连接线(-)的话不应该出现在开头或结尾,这个我没想出来该怎么写=_=
发表评论