发布时间:2026/8/27 15:28:28
revalidator 内置 11 种 format 格式速查:email、url、date-time 等 JSON Schema 格式验证一篇搞定 revalidator 内置 11 种 format 格式速查email、url、date-time 等 JSON Schema 格式验证一篇搞定【免费下载链接】revalidatorA cross-browser / node.js validator powered by JSON Schema项目地址: https://gitcode.com/gh_mirrors/re/revalidatorrevalidator 是同时运行在浏览器和 Node.js 上的轻量级 JSON Schema 验证器它内置的 11 种 formatemail、url、ip-address、date-time 等覆盖了日常开发中几乎全部的格式验证场景。本文一次讲清全部 11 种 revalidator format 格式每种格式的规则、有效/无效示例和容易踩的坑。一、三分钟上手 revalidator安装依赖npm install revalidator用revalidator.validate(obj, schema)校验对象格式验证只需在字段里加一行formatvar revalidator require(revalidator); var result revalidator.validate( { email: meexample.com, homepage: not-a-url }, { properties: { email: { type: string, format: email }, homepage: { type: string, format: url } } } ); console.log(result.valid); // false console.log(result.errors); // [{ attribute: format, property: homepage, ... }]返回值固定是{ valid, errors }结构格式不通过时attribute为format。REST 服务中的完整用法可参考example/webservice.js。二、11 种 format 格式完整速查表#format验证对象✅ 有效示例❌ 无效示例1email电子邮箱地址userexample.comuser.com2urlhttp/https/ftp/git 链接http://test.com/hello3ip-addressIPv4 地址192.168.1.1256.1.1.14ipv6IPv6 地址完整 8 段2001:0db8:85a3:0000:0000:8a2e:0370:73342001:db8::15date-timeISO 8601 UTC 日期时间2025-01-01T12:00:00Z2025-01-01 12:006date日期2025-01-0101/01/20257time时间12:30:4512:308colorCSS 颜色值#ff0000、red#ffff9host-name主机名/域名www.example.com123.45610utc-millisec毫秒时间戳数字1735689600000173568960000011regex合法正则表达式字符串^[a-z]$[unclosed全部 11 个格式的正则/函数定义都集中在lib/revalidator.js的validate.formats第 121-146 行与validate.formatExtensions第 151-153 行两段对照源码阅读成本极低。三、网络类格式验证url、email、ip-address、ipv6、host-name3.1 url使用率最高但有个隐藏开关url识别http、https、ftp、git四种协议端口、路径、查询串、锚点都允许例如https://example.com:8080/api?a1#top可以通过。⚠️最重要的坑url并不在默认的格式表里而是单独定义在validate.formatExtensions扩展表中。如果选项里传了validateFormatExtensions: falseurl会被静默跳过校验、恒为通过第四节详述。3.2 email大小写不敏感的邮箱校验支持标准的本地名 域名结构本地名允许.、、_等符号域名支持国际化字符范围整体匹配不区分大小写。user.nametagsub.example.co这类常见写法都能通过。3.3 ip-address 与 ipv6两种 IP 写法ip-addressIPv4每段 0-255因此256.10.1.1会被判无效ipv6IPv6只支持xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx的完整 8 段写法2001:db8::1这类::缩写不会通过。需要支持缩写时请改用pattern自写正则。3.4 host-name宽松的主机名匹配匹配若干标签段 点分隔的主机名结构每段须以字母开头。注意它是非锚定匹配不固定结尾只要开头能对上即通过因此比 email 的域名部分更宽松。四、日期时间格式验证date、time、date-time、utc-millisec4.1 date 与 time严格定长date必须是YYYY-MM-DD四-二-二数字如2025-01-0101/01/2025斜杠写法不接受time必须是HH:MM:SS二-二-二数字秒不能省略。4.2 date-time必须 UTC、必须以 Z 结尾格式为YYYY-MM-DDTHH:MM:SS(.sss)?Z三条硬性要求必须以Z结尾UTC 时间08:00时区偏移不通过小数毫秒可选出现时只能是 1-3 位日期与时间之间用T连接不能是空格。2025-01-01T12:00:00.123Z与2025-01-01T12:00:00Z都合法。4.3 utc-millisec只认数字类型它的实现是值是 number 且 ≥ 0所以1735689600000通过字符串1735689600000失败。接收前端传来的字符串时间戳时需先转数字或配合cast选项处理。五、其他格式验证color 与 regex5.1 colorCSS 颜色三写法十六进制#fff或#ff0000rgb(r,g,b)函数数值可带正负号和%16 个具名颜色red、blue、green、white、black等。5.2 regex校验输入本身是合法正则值必须是字符串且能成功构造RegExp例如^[a-z]$。适合用户传入过滤规则、黑名单正则这类场景防止一条坏正则让服务崩溃。六、最容易踩坑的 4 个 format 选项调用revalidator.validate(obj, schema, options)时下面几个选项直接决定格式验证的行为选项默认值作用validateFormatstrue总开关false时所有格式验证整体跳过validateFormatsStrictfalsetrue时未识别的 format 名也会报错false则静默忽略validateFormatExtensionstruefalse时url唯一的扩展格式不再校验additionalPropertiestrue是否允许 schema 未声明的额外字段两个推荐组合最严格{ validateFormats: true, validateFormatsStrict: true }把format: emaill这种拼写错误也当作报错只查类型长度{ validateFormats: false }格式验证全部关闭。默认非严格模式下format 名写错不会被发现、直接跳过——这是实际项目里最常见的坑。七、自定义格式验证错误消息默认报错是英文例如is not a valid email。在字段上加messages即可中文化{ properties: { contact: { type: string, format: email, messages: { format: 邮箱格式不正确 } } } }之后错误对象变为{ attribute: format, property: contact, expected: email, actual: not-email, message: 邮箱格式不正确 }可直接展示给最终用户。八、总结revalidator format 验证速查清单共 11 种内置格式默认表 10 种email、ip-address、ipv6、date-time、date、time、color、host-name、utc-millisec、regex 扩展格式 1 种url三大高频坑url受validateFormatExtensions开关控制、ipv6不支持::缩写、utc-millisec只接受数字内置格式不够用时用pattern或conform自写规则各 schema 字段的完整说明见README.mdtest/validator-test.js中的format相关用例是确认行为的好参考。【免费下载链接】revalidatorA cross-browser / node.js validator powered by JSON Schema项目地址: https://gitcode.com/gh_mirrors/re/revalidator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/27 15:28:28

收藏必备!RAG技术详解:解决大模型知识滞后与事实虚构问题

前言 你是否曾经疑惑,为什么有些AI能准确回答最新事件,而你的AI助手却对近期发生的事情一无所知?或者为什么别人用的AI能提供专业领域的高质量回答,而你的却常常“胡说八道”? 这一切的区别,很可能就在于是…

2026/8/27 17:53:59

攻防演练系统的渐进迁移

攻防演练系统的渐进迁移红蓝对抗:红队作战框架与蓝队检测规则编写的实践里,存量系统迁移的分阶段切换路径应服务于一个具体决定:继续、限制、回退,或补充证据。把它写成通用口号,往往会遮住最重要的前提。演练范围、日…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/27 10:58:22

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/27 7:46:21

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/27 0:01:16

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

2026/8/27 0:01:16

LeetCode Hot100(51-60)算法精解与面试技巧

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

2026/8/27 0:01:16

CRC校验实战:从模2除法到HJ212协议排错

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

2026/8/26 19:34:06

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/26 19:17:08

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/26 19:34:05

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…