You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular JSON Schema的12位数字正则校验失效问题求助

解决Angular JSON Schema正则校验12位数字的问题

我来帮你搞定这个正则校验的坑!你遇到的问题根源其实是正则写法不对,再加上JSON对转义字符的特殊处理,才导致校验逻辑失效。

问题根源拆解

你用的正则"[\\d+]{12}"有两个致命问题:

  1. 没有锚定整个字符串:缺少^(字符串开头)和$(字符串结尾)锚点,导致只要输入的字符串里存在任意12位符合规则的子串,校验就会通过——比如输入13位数字时,前12位满足条件,所以校验不报错。
  2. 正则语法逻辑错误:[\d+]是一个字符集合,意思是匹配「数字」或「+」中的任意一个字符,加上{12}只是要求连续出现12次这类字符,但根本没限制整个字符串的长度。另外JSON解析后会把\\d变成\d,这部分是正常的,但你的正则逻辑本身就跑偏了。

正确的解决方案

你需要用锚定整个字符串的正则,确保输入从开头到结尾正好是12位数字。在JSON Schema里,正确的pattern应该这么写:

{
  "type": "string",
  "pattern": "^\\d{12}$"
}

为什么这个正则能生效?

  • ^:强制校验从字符串的第一个字符开始,避免前面有多余内容
  • \\d{12}:匹配恰好12个数字(JSON里必须用双反斜杠\\,因为单反斜杠是JSON的转义字符,解析后正则引擎拿到的是\d,代表0-9的数字)
  • $:强制校验到字符串的最后一个字符结束,避免后面有多余内容

这样一来,输入不足12位数字会校验失败,超过12位也会失败,只有正好12位纯数字才能通过校验。

额外提醒

在JSON Schema里用正则时,所有需要转义的字符(比如\)都得用双反斜杠\\表示——因为JSON会先解析一次字符串,把\\转换成\,再传递给正则引擎处理,这点千万别忘。

内容的提问来源于stack exchange,提问作者Kashif Imran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:59