参考

正则表达式

patternpatternProperties 关键词 使用正则表达式来表达约束。使用的正则表达式语法来自 JavaScript (ECMA 262,具体来说)。但是,该完整语法并没有得到广泛支持,因此建议你使用下面描述的语法子集。

  • 单个 Unicode 字符(除了以下特殊字符)匹配自身。
  • .: 匹配除换行符外的任何字符。(请注意,换行符的构成在某种程度上取决于你的平台和语言环境,但在实践中,这很少重要)。若要包含换行符,请使用 (.|\r?\n)* 模式,该模式避免了使用正则表达式标志/修饰符,并且在各种正则表达式库中都有良好的支持。
  • ^: 仅匹配字符串开头。
  • $: 仅匹配字符串结尾。
  • (...): 将一系列正则表达式分组为单个正则表达式。
  • |: 匹配 | 符号之前或之后的正则表达式。
  • [abc]: 匹配方括号内的任何字符。
  • [a-z]: 匹配字符范围。
  • [^abc]: 匹配任何列出的字符。
  • [^a-z]: 匹配范围之外的任何字符。
  • +: 匹配前面正则表达式的一次或多次重复。
  • *: 匹配前面正则表达式的零次或多次重复。
  • ?: 匹配前面正则表达式的零次或一次重复。
  • +?, *?, ??: *, +? 限定符都是贪婪的;它们尽可能多地匹配文本。有时这种行为并不可取,你希望尽可能少地匹配字符。
  • (?!x), (?=x): 负向先行断言和正向先行断言。
  • {x}: 匹配前面正则表达式恰好 x 次。
  • {x,y}: 匹配前面正则表达式至少 x 次,至多 y 次。
  • {x,}: 匹配前面正则表达式至少 x 次。
  • {x,y}?, {x,}?: 以上表达式的非贪婪版本。
  • 仅使用标准转义符,例如\n\r\t,并记住您还需要进行 JSON 转义。

示例

以下示例匹配一个简单的北美电话号码,带有一个可选的区号

模式
{ "type": "string", "pattern": "^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$"}
数据
"555-1212"
符合模式
数据
"(888)555-1212"
符合模式
数据
"(888)555-1212 ext. 532"
不符合模式
数据
"(800)FLOWERS"
不符合模式

以下示例检查字符串是否以{{开头,并以}}结尾,并且还允许多行字符串。

数据
{ "type": "string", "pattern": "^\\{\\{(.|[\\r\\n])*\\}\\}$", }
数据
"{{ foo\nbar }}"
数据
"{ foo }"

需要帮助?

您发现这些文档有用吗?

帮助我们让文档变得更好!

在 JSON Schema 中,我们重视文档贡献,就像其他任何类型的贡献一样!

仍然需要帮助?

学习 JSON Schema 经常令人困惑,但别担心,我们就在这里提供帮助!。