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),仅供参考

相关新闻

最新新闻

大模型为啥按Tokens收费?Tokens究竟是什么?

大模型为啥按Tokens收费?Tokens究竟是什么?

你有没有这种感觉?看了很多Transformer、LLM的文章,却总觉得云里雾里?今天我们来聊聊大型语言模型(LLM)中的一个核心概念——Token。直到我彻底掌握了"Token"和"分词器"的概念,这成为我…

2026/8/27 15:38:21
2025年大模型面试必备:30个RAG常见问题及答案,助你轻松过关!

2025年大模型面试必备:30个RAG常见问题及答案,助你轻松过关!

一、基础RAG面试问题 1、解释RAG系统的主要部分及其工作原理 一个RAG(检索增强生成)系统有两个主要组件:检索器和生成器。 ● 检索器:从外部来源(如数据库、文档或网站)搜索和收集相关信息。 ● 生成器…

2026/8/27 15:38:21
AI4AI实践:用35B开源模型构建自动研究流程

AI4AI实践:用35B开源模型构建自动研究流程

AI4AI(AI for AI)是把大模型引入人工智能研究流程,让模型参与假设生成、实验设计、代码编写、结果分析和迭代优化的一种工程实践。这个词在开源社区的热度上升得很快,背后是AI研究本身的复杂度在快速膨胀,研究者很难只…

2026/8/27 15:38:21
零基础人员如何入门AI大模型?AI入门指南:零基础人员的专属学习路径!

零基础人员如何入门AI大模型?AI入门指南:零基础人员的专属学习路径!

AI 已成趋势,这点自不必多言。如今网络上的AI课程可谓五花八门形形色色,让人眼花缭乱难辨真假。其实细究下来,不少都是通过贩卖焦虑吸引对AI一知半解的普通人报课。有感于此,我想给零基础的你,介绍一下入门AI路径指南。…

2026/8/27 15:38:20
[LLMD]中文开发:庖丁解牛-爬虫解剖,AI搜索引用的过程拆解

[LLMD]中文开发:庖丁解牛-爬虫解剖,AI搜索引用的过程拆解

# [LLMD] [AI搜索引用系统 八步链路 v2.0] # [文件名]: [ai_search_pipeline_v2.md] # [版本]: [2.0] # [作者]: [熵增就是商的余数] # [描述]: [本文档将“AI搜索和引用”的完整过程,定义为八个依次执行的筛选模块。] # [语言]: [中文语义代码 (Chinese Semantic …

2026/8/27 15:38:20
ComfyUI-KwaiKolorsWrapper采样器大揭秘:6种调度器实测对比,Kolors出图质量差一半的原因找到了吗

ComfyUI-KwaiKolorsWrapper采样器大揭秘:6种调度器实测对比,Kolors出图质量差一半的原因找到了吗

ComfyUI-KwaiKolorsWrapper采样器大揭秘:6种调度器实测对比,Kolors出图质量差一半的原因找到了吗 【免费下载链接】ComfyUI-KwaiKolorsWrapper Diffusers wrapper to run Kwai-Kolors model 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Kwai…

2026/8/27 15:33:20