如何调整域名验证正则以排除www及子域名?代码定位
问题分析与解决
你的正则表达式中,**(?:[a-z0-9](?:[a-z0-9-æøå]{0,61}[a-z0-9])?\.)+**这段代码是导致能匹配www.domain.tld或sub.domain.tld这类子域名的核心原因:
- 这个分组定义了一段带结尾点号的域名片段(比如
www.、blog.) - 末尾的
+量词表示该分组可以重复1次或多次,意味着它能匹配任意数量的子域名前缀,甚至多层嵌套的子域(比如a.b.domain.tld)
如果要只验证domain.tld这种不带子域名的格式,只需去掉分组外的+量词,让正则仅匹配「主域名.顶级后缀」的结构即可,修改后的正则如下:
/^[a-z0-9](?:[a-z0-9-æøå]{0,61}[a-z0-9])?\.[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/isu
内容的提问来源于stack exchange,提问作者Seyyed Mohammad Hosseini
相关产品推荐
相关产品推荐

