Json 架构 - 使用 RegEx 进行条件评估
Json Schema - Conditional Evaluation with RegEx
我看过几个例子——最引人注目的是这里——https://json-schema.org/understanding-json-schema/reference/conditionals.html——关于基于另一个字段的常量或枚举值的条件模式的实现,但我想知道这是否可以用正则表达式实现并且不使用另一个字段进行检查(即,国家是什么,然后将模式应用于另一个字段)。
在我的场景中,我想验证邮政编码的格式是否适合加拿大邮政编码。如果很好,如果不是,那么我想确保在此字段中只允许提供值 "NA"。
"if": {
"properties": { "postalcode": { "pattern": "[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])?" } }
},
"else": {
"properties": { "postalcode": { "pattern": "NA" } }
}
所以一旦执行,除非我有有效的加拿大邮政编码或 NA,否则一切都会失败。
谢谢
这次你不需要条件。 anyOf
会成功的。
"properties": {
"postalcode": {
"type": "string",
"anyOf":[
{ "pattern": "[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])?" },
{ "const": "NA" }
]
}
}
我看过几个例子——最引人注目的是这里——https://json-schema.org/understanding-json-schema/reference/conditionals.html——关于基于另一个字段的常量或枚举值的条件模式的实现,但我想知道这是否可以用正则表达式实现并且不使用另一个字段进行检查(即,国家是什么,然后将模式应用于另一个字段)。
在我的场景中,我想验证邮政编码的格式是否适合加拿大邮政编码。如果很好,如果不是,那么我想确保在此字段中只允许提供值 "NA"。
"if": {
"properties": { "postalcode": { "pattern": "[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])?" } }
},
"else": {
"properties": { "postalcode": { "pattern": "NA" } }
}
所以一旦执行,除非我有有效的加拿大邮政编码或 NA,否则一切都会失败。
谢谢
这次你不需要条件。 anyOf
会成功的。
"properties": {
"postalcode": {
"type": "string",
"anyOf":[
{ "pattern": "[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])?" },
{ "const": "NA" }
]
}
}