revalidator 内置 11 种 format 格式速查:email、url、date-time 等 JSON Schema 格式验证一篇搞定

发布时间:2026/10/30 23:44:18

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/10/26 4:41:24

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

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

2026/10/31 18:59:41

C语言中断处理机制:interrupt关键字、ISR与嵌入式工程实践

很多人第一次在C语言里看到void timer0_isr(void) interrupt 1这种写法时,都会愣一下:C语言标准里哪来的interrupt关键字?翻开任何一本C语言教材的附录关键字表,从auto数到while,三十二个关键字里根本没有它。但只要你…

2026/10/31 18:59:41

C++ main函数深度解剖:从入口到运行时全链路解析

1. 项目概述:从一行代码开始的C世界入口解剖你打开一个C项目,第一眼看到的往往不是炫酷的算法或精妙的数据结构,而是那个被无数教程反复强调、却极少被真正拆开细看的文件——main.cpp。它通常只有一行核心代码:int main(int argc…

2026/10/31 18:59:41

真流式语音识别实战:基于有道R2T2构建英语学习实时字幕

1. 项目缘起:为什么我要在英语学习网站上硬啃“真流式”语音识别先说结论:这个项目的起因很简单,就是想给自己做的AI英语学习网站加一个“能边说话边出字的”语音输入功能,而不是等你说完一整句话才开始识别。市面上很多所谓的“语…

2026/10/31 18:59:41

ECharts graphic组件居中实现与优化指南

1. ECharts graphic组件居中方案解析在数据可视化项目中,经常需要在图表上叠加自定义图形元素。ECharts的graphic组件提供了这种能力,但很多开发者在使用时都会遇到一个典型问题:如何让这些自定义元素完美居中显示?这看似简单的问…

2026/10/31 18:59:41

单人全栈研发范式:多Agent+React19+Elysia+GitOps实践

1. 这不是“一个人干五个人的活”,而是“用新工具链重写研发流程的底层逻辑”“1人AI全栈”这个标题,第一眼容易被误解成营销话术——好像在说“靠意志力硬扛”,或者“用AI当免费苦力”。但实操过半年以上、真正跑通从需求评审到灰度发布的单…

2026/10/31 18:54:40

浏览器扩展端侧AI推理实战:Manifest V3与WebGPU架构指南

1. 端侧推理为何突然成了浏览器扩展的刚需 浏览器扩展这个行当,过去十年基本就是干三件事:改页面样式、拦网络请求、往页面里塞按钮。逻辑简单,打包出来几百KB,扔到应用商店就完事。但从去年开始,我明显感觉到风向变了…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑