java 匹配顶级域名、一级域名和子域名的正则表达式


js:   ^(?:[a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+\.[a-zA-Z]{2,}$
这个正则表达式可以匹配以下模式的文本:

collmall.com(顶级域名)
collmall.co.uk(顶级域名)
blog.collmall.com(子域名)
subdomain.blog.collmall.com(多级子域名)
解析正则表达式的含义如下:

^:表示字符串的开始。
(?:[a-zA-Z0-9_-]+\.)*:非捕获型分组,匹配零个或多个由字母、数字、下划线或破折号组成的域名标签,后面跟一个点(.)。
[a-zA-Z0-9_-]+:匹配一个或多个由字母、数字、下划线或破折号组成的域名标签。
\.:匹配一个点(.)。
[a-zA-Z]{2,}:匹配至少两个字母组成的顶级域名。
$:表示字符串的结束。
请注意,这只是一个基本的正则表达式,并未考虑特殊情况,如多字节字符域名或特殊字符域名。根据实际需求,可能需要对正则表达式进行进一步调整

与JS正则表达式相同,Java正则表达式也需要使用反斜杠来转义字符。因此,将正则表达式转换为Java正则表达式需要将\w替换为[Ww],将-替换为[Hh],将.替换为[.],并将{2,}替换为{2}。最终,Java正则表达式如下所示:

java: /^(?:[a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+\.[a-zA-Z]{2,}$/

你可能感兴趣的:(正则表达式,java)