npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@zddi/validator

v0.0.2

Published

一个用于验证各种数据格式的 TypeScript 库,特别针对 DNS 记录类型、IP 地址、域名等网络相关数据提供了完整的验证功能。

Readme

Validator

一个用于验证各种数据格式的 TypeScript 库,特别针对 DNS 记录类型、IP 地址、域名等网络相关数据提供了完整的验证功能。

DNS 记录类型验证

本库提供了完整的 DNS 记录类型(Rdata)验证功能。以下是支持的 DNS 记录类型及其验证规则:

A 记录

A 记录用于将域名映射到 IPv4 地址。

验证函数: isRdataA(value: string)

格式要求:

  • 必须是有效的 IPv4 地址
  • 格式: x.x.x.x (每个 x 为 0-255)

示例:

import { isRdataA } from '@zdns/validator';

isRdataA('192.168.1.1'); // true
isRdataA('10.0.0.1'); // true
isRdataA('256.1.1.1'); // false (超出范围)
isRdataA('2001:db8::1'); // false (IPv6 地址)

AAAA 记录

AAAA 记录用于将域名映射到 IPv6 地址。

验证函数: isRdataAAAA(value: string)

格式要求:

  • 必须是有效的 IPv6 地址
  • 支持完整格式和压缩格式(使用 ::

示例:

import { isRdataAAAA } from '@zdns/validator';

isRdataAAAA('2001:db8::1'); // true
isRdataAAAA('2001:0db8:85a3:0000:0000:8a2e:0370:7334'); // true
isRdataAAAA('::1'); // true
isRdataAAAA('192.168.1.1'); // false (IPv4 地址)

NS 记录

NS 记录用于指定该域名的权威域名服务器。

验证函数: isRdataNS(value: string)

格式要求:

  • 必须是有效的域名或区名称
  • 支持以点结尾的完整域名

示例:

import { isRdataNS } from '@zdns/validator';

isRdataNS('ns1.example.com'); // true
isRdataNS('ns1.example.com.'); // true
isRdataNS('example.com.'); // true
isRdataNS('invalid..com'); // false

CNAME 记录

CNAME 记录用于创建域名的别名。

验证函数: isRdataCNAME(value: string)

格式要求:

  • 必须是有效的域名

示例:

import { isRdataCNAME } from '@zdns/validator';

isRdataCNAME('www.example.com'); // true
isRdataCNAME('example.com'); // true
isRdataCNAME('invalid..com'); // false

PTR 记录

PTR 记录用于反向 DNS 查找,将 IP 地址映射到域名。

验证函数: isRdataPTR(value: string)

格式要求:

  • 必须是有效的域名
  • 常用于反向 DNS 区域(如 1.0.0.127.in-addr.arpa

示例:

import { isRdataPTR } from '@zdns/validator';

isRdataPTR('example.com'); // true
isRdataPTR('1.0.0.127.in-addr.arpa'); // true
isRdataPTR('invalid..com'); // false

DNAME 记录

DNAME 记录用于创建域名的别名,与 CNAME 类似但用于整个域。

验证函数: isRdataDNAME(value: string)

格式要求:

  • 必须是有效的域名

示例:

import { isRdataDNAME } from '@zdns/validator';

isRdataDNAME('example.com'); // true
isRdataDNAME('sub.example.com'); // true

TXT 记录

TXT 记录用于存储任意文本信息。

验证函数: isRdataTXT(value: string)

格式要求:

  • 必须是非空字符串
  • 可以包含任何字符

示例:

import { isRdataTXT } from '@zdns/validator';

isRdataTXT('any text'); // true
isRdataTXT('v=spf1 include:_spf'); // true
isRdataTXT(''); // false

SPF 记录

SPF 记录用于指定哪些邮件服务器被授权代表该域名发送邮件。

验证函数: isRdataSPF(value: string)

格式要求:

  • 必须是非空字符串
  • 通常包含 SPF 策略字符串

示例:

import { isRdataSPF } from '@zdns/validator';

isRdataSPF('v=spf1 include:_spf.google.com ~all'); // true
isRdataSPF('v=spf1 mx -all'); // true
isRdataSPF(''); // false

MX 记录

MX 记录用于指定该域名的邮件服务器。

验证函数: isRdataMX(value: string)

格式要求:

  • 格式: <优先级> <邮件服务器域名>
  • 优先级: 0-65535 的整数
  • 邮件服务器: 有效的域名

示例:

import { isRdataMX } from '@zdns/validator';

isRdataMX('10 mail.example.com'); // true
isRdataMX('0 mail.example.com'); // true
isRdataMX('65535 mail.example.com'); // true
isRdataMX('65536 mail.example.com'); // false (优先级超出范围)
isRdataMX('10'); // false (缺少邮件服务器)

CAA 记录

CAA 记录用于指定哪些证书颁发机构(CA)被授权为该域名颁发证书。

验证函数: isRdataCAA(value: string)

格式要求:

  • 格式: <标志> <标签> <值>
  • 标志: 0-255 的整数
  • 标签: issueissuewildiodef
  • 值: 用双引号括起来的字符串,长度 1-253

示例:

import { isRdataCAA } from '@zdns/validator';

isRdataCAA('0 issue "letsencrypt.org"'); // true
isRdataCAA('0 issuewild "letsencrypt.org"'); // true
isRdataCAA('0 iodef "mailto:[email protected]"'); // true
isRdataCAA('256 issue "letsencrypt.org"'); // false (标志超出范围)
isRdataCAA('0 invalid "letsencrypt.org"'); // false (无效标签)

NAPTR 记录

NAPTR 记录用于动态重写规则,常用于 ENUM 和 SIP。

验证函数: isRdataNAPTR(value: string)

格式要求:

  • 格式: <顺序> <偏好> <标志> <服务> <正则表达式> <替换>
  • 顺序: 0-65535 的整数
  • 偏好: 0-65535 的整数
  • 标志: 单个字母或数字,可选引号
  • 服务: 用双引号括起来的字符串
  • 正则表达式: 用双引号括起来的字符串
  • 替换: 有效的域名

示例:

import { isRdataNAPTR } from '@zdns/validator';

isRdataNAPTR('100 10 "u" "sip+E2U" "!^.*$!sip:[email protected]!" .'); // true
isRdataNAPTR('100 10 u sip+E2U "!^.*$!sip:[email protected]!" .'); // false (标志格式错误)

SRV 记录

SRV 记录用于指定提供特定服务的服务器。

验证函数: isRdataSRV(value: string)

格式要求:

  • 格式: <优先级> <权重> <端口> <目标>
  • 优先级: 0-65535 的整数
  • 权重: 0-65535 的整数
  • 端口: 1-65535 的有效端口号
  • 目标: 有效的域名

示例:

import { isRdataSRV } from '@zdns/validator';

isRdataSRV('0 5 5060 sipserver.example.com'); // true
isRdataSRV('10 60 8080 www.example.com'); // true
isRdataSRV('0 5 0 sipserver.example.com'); // false (端口无效)
isRdataSRV('0 5 5060'); // false (缺少目标)

SOA 记录

SOA 记录用于指定区域的权威信息。

验证函数: isRdataSOA(value: string)

格式要求:

  • 格式: <主服务器> <负责人邮箱> <序列号> <刷新间隔> <重试间隔> <过期时间> <最小TTL>
  • 主服务器: 有效的域名
  • 负责人邮箱: 有效的域名(邮箱格式,@ 替换为 .)
  • 序列号: 0-2147483647 的整数
  • 刷新间隔: 0-2147483647 的整数(秒)
  • 重试间隔: 0-2147483647 的整数(秒)
  • 过期时间: 0-2147483647 的整数(秒)
  • 最小TTL: 0-2147483647 的整数(秒)

示例:

import { isRdataSOA } from '@zdns/validator';

isRdataSOA('ns1.example.com. admin.example.com. 2023010101 3600 1800 604800 86400'); // true
isRdataSOA('ns1.example.com. admin.example.com.'); // false (缺少参数)

通用 Rdata 验证

验证函数: isRdata(value: string, type: string)

根据记录类型自动调用相应的验证函数。

支持的记录类型:

  • A
  • AAAA
  • NS
  • CNAME
  • PTR
  • DNAME
  • TXT
  • SPF
  • MX
  • CAA
  • NAPTR
  • SRV
  • SOA

示例:

import { isRdata } from '@zdns/validator';

isRdata('192.168.1.1', 'A'); // true
isRdata('2001:db8::1', 'AAAA'); // true
isRdata('ns1.example.com', 'NS'); // true
isRdata('10 mail.example.com', 'MX'); // true
isRdata('invalid', 'INVALID'); // false (不支持的类型)

使用示例

import { isRdataA, isRdataMX, isRdata, isDomainName, isIPv4 } from '@zdns/validator';

// 验证 A 记录
if (isRdataA('192.168.1.1')) {
  console.log('有效的 A 记录');
}

// 验证 MX 记录
if (isRdataMX('10 mail.example.com')) {
  console.log('有效的 MX 记录');
}

// 通用验证
if (isRdata('192.168.1.1', 'A')) {
  console.log('有效的 A 记录');
}

// 验证域名
if (isDomainName('example.com')) {
  console.log('有效的域名');
}

// 验证 IPv4
if (isIPv4('192.168.1.1')) {
  console.log('有效的 IPv4 地址');
}

注意事项

  1. 所有验证函数都返回布尔值(truefalse
  2. 域名验证支持国际化域名(IDN),会自动转换为 punycode 进行验证
  3. IPv6 地址支持完整格式和压缩格式
  4. 某些记录类型(如 MX、SRV)需要多个参数,使用空格分隔
  5. 字符串类型的值(如 CAA、NAPTR)需要使用双引号括起来