域名正则表达式怎么写,哪些坑必须避开,国际域名怎么处理

速达网络 域名知识 3

搞过开发的都知道,验证域名就像吃鱼挑刺——看着简单,一不留神就卡喉咙。去年我们团队就栽过跟头,用了个漏洞百出的正则表达式,结果让黑客注入了上百个非法子域名。今天咱们就掰开揉碎聊聊,​​如何写出既严谨又高效的域名正则​​。

基本结构拆解

域名正则表达式怎么写,哪些坑必须避开,国际域名怎么处理-第1张图片

​Q:最基础的域名正则长啥样?​
先看这个万能模板:
^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$
解释下关键点:

  • ​开头不用www​​ → 允许直接匹配根域名
  • ​中横线防连续​​ → 禁止出现"my--site"这种格式
  • ​后缀长度≥2​​ → 兼容.com/.io等传统域名

但注意!这个正则漏掉了三个重要情况:

  1. 新顶级域名如.blog/.app
  2. 国际化域名(IDN)
  3. 带端口号的场景

举个实际翻车案例,某电商平台用[a-z0-9]+\.[a-z]{2,4}$匹配域名,结果无法识别.london这种地理后缀,导致促销链接全部失效。


进阶技巧实战

​处理国际化域名(IDN)的秘诀​​:
^xn--[a-z0-9]+(-[a-z0-9]+)*\.[a-z]{2,}$
这里有个冷知识:​​中文域名在底层会被转码成xn--开头的ACE字符串​​。比如"中文.com"实际存储为"xn--fiq

标签: 怎么 正则 表达式