域名验证器(RFC合规性检查)
检查域名是否符合RFC 1035/1123语法规则。逐项验证标签长度、总长度、允许字符和连字符位置,如有违规会显示具体原因。
域名验证器是什么
域名验证器会将输入的字符串按照RFC 1035(1987年发布)和RFC 1123(1989年发布)规定的域名语法规则逐项拆解验证,而不是只给出「有效或无效」这样一句话的结论。它会具体显示违反了哪一条规则、以及是哪个标签(用`.`分隔的各部分)导致了违规,因此在你已经知道某个域名字符串被系统拒绝、却不清楚具体原因时特别有用。
需要注意的是,本工具只检查语法层面(即字符串的书写形式),并不会查询DNS来确认该域名是否已经实际注册、对应的网站是否在运行,也不会告诉你这个名称当前是否可以注册。正因如此,它非常适合在正式注册或部署之前,先确认一个新域名候选名称或配置文件中的主机名在语法上是否成立。
域名验证器的使用方法
- 输入域名 在输入框中输入想要检查的域名(例如example.com)。请先去掉开头的协议部分(如`https://`)和结尾的路径部分(如`/path`),只保留域名本身。
- 查看判定结果 输入内容后会实时评估6条规则,每条规则分别显示为「通过」「违规」或「提示」。
- 阅读违规原因 标记为「违规」的行会附带具体原因,例如出问题的标签内容或字符数,据此可以判断需要修改哪一部分。
- 用示例按钮体验边界情况 点击「有效示例」或「无效示例」按钮,会自动填入处于规则边界的示例字符串,方便快速了解各条规则的判定方式。
用好本工具的小技巧
- 本工具依据RFC 1035/1123规定的语法规则进行验证,并不检查该域名是否实际已注册或可通过DNS解析。
- 在为表单自行编写校验正则表达式之前,先用本工具确认边界情况(恰好63个字符、连字符位置等)的判定结果,有助于避免实现中的疏漏。
- 包含非ASCII字符(如日语域名)的输入仅会跳过字符集检查。如需精确验证,请先使用Punycode转换工具转换为`xn--`表示后再输入。
- 顶级域名全为数字的情况在实际中几乎不会出现,但特意将其纳入检查项,以便在表单校验时防止与IP地址混淆。
- 同样的规则也可直接应用于电子邮件地址中`@`之后的部分(域名部分),因此也可用作邮箱域名的简易检查。
适用场景
实现表单校验前的预先确认
在自行编写域名输入框的校验正则表达式之前,先用本工具确认恰好63个字符的标签、连字符位置等边界情况,可以提前发现实现中的疏漏。
新域名候选名称的预先检查
在为服务或子域名选定候选名称时,可以在向注册商查询之前,先确认该名称在语法上是否成立。
邮箱地址中域名部分的简易验证
邮箱地址中`@`之后的部分基本遵循相同的主机名规则,因此本工具也可以作为邮箱验证逻辑的辅助检查手段。
排查报错原因
当系统提示某个字符串「不是有效的域名」却不清楚具体原因时,可以将其粘贴进来,快速定位是哪一条规则未通过。
术语表
- 标签
- 域名中由`.`分隔出的各个部分。以www.example.com为例,「www」「example」「com」这三部分都是标签。RFC 1035正是以标签为单位来限制长度和可用字符,而非针对域名整体。
- 顶级域名(TLD)
- 域名中最右侧的那个标签,例如.com或.jp。它位于DNS层级结构的最顶端,直接位于(不可见的)根域之下。
- 完全限定域名(FQDN)
- 从主机名到顶级域名,完整、不省略任何层级书写出来的域名。严格来说,FQDN结尾会带一个代表根域的「.」(例如example.com.),只是在日常使用中通常会省略这个句点。
- 国际化域名(IDN)
- 包含日语、中文、阿拉伯语等非ASCII字符的域名。由于DNS本身只能处理ASCII字符,因此IDN在实际注册和解析之前都会被转换为Punycode。
- Punycode
- 一种编码方式,用于将IDN中的非ASCII字符部分转换为DNS可以处理的ASCII字符串(以`xn--`开头)。浏览器地址栏通常会将其还原为原始文字后再显示。
- 线路格式
- DNS查询与应答在网络上实际传输时所使用的二进制格式。每个标签前面都会有一个表示其长度的字节,而该字节只能表示0到63之间的数值,这正是标签长度上限为63个字符的技术根源。
- 主机名
- 用于标识网络上某台设备的名称,是域名的一种具体形式。RFC 1123将主机名可用的字符限定为字母、数字和连字符,本工具正是依据这一规则进行验证的。
常见问题
闲话 ― 为何「域名验证」总是被反复重新发明
域名的语法检查乍看之下似乎只需一个简单的正则表达式即可完成,但实际上许多开发者都曾在自行实现时栽过跟头。无论是表单中的邮箱验证、配置文件中的主机名解析,还是API中的URL校验,各种场景都需要处理「类似域名的字符串」,然而能够准确反映RFC 1035(1987年)和RFC 1123(1989年)正式规则的实现却并不多见。
例如「每个标签不超过63个字符」「整体不超过253个字符」这一两级长度限制,源自DNS二进制传输格式(实际在网络上交换的二进制格式)的设计。每个标签前面都会放置一个表示长度的字节,而该字节的取值被限制在0〜63(6位可表示的最大值)之内,这正是标签长度限制的直接原因。
顶级域名不应全为数字这一惯例也有其有趣的历史。这并非RFC中明文规定的强制规则,而是作为区分IPv4地址(数字与点组成的序列)和域名的一种实现智慧被广泛采纳。许多DNS解析器和浏览器正是利用这一惯例,将「192.168.1.1」这样的字符串判定为IP地址而非域名。