使用以下JSON模式验证电话号码(如果提供(。已接受验证最小长度10最大长度20和图案如果电话为空,则无需验证
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"Item": {
"type": "object",
"properties": {
"Phone": {
"anyOf": [
{
"type": "integer",
"minLength": 10,
"maxLength": 20,
"pattern": "^(\([0-9]{3}\))?[0-9]{3}-[0-9]{4}$"
},
{
"type": [ "integer", "null" ]
}
]
}
}
}
}
}
你能建议一下上面的方案中缺少什么吗?非常感谢。
从null大小写中删除integer
。它的速度变慢了,所以整数通过,这会覆盖电话号码的大小写。
第二,如果可能的话,您可能希望对您的架构使用稍后的草稿。草案4相当陈旧。请与您的验证器联系,看看它是否支持更新的草稿。
您的模式中存在错误,但您缺少对JSON模式在适用性方面如何工作的理解。
JSON模式有许多只适用于特定类型的关键字。当类型不是关键字适用性的类型时,它没有任何效果。
";电话";可以简化为以下内容:
{
"type": ["string", "null"],
"minLength": 10,
"maxLength": 20,
"pattern": "^(\([0-9]{3}\))?[0-9]{3}-[0-9]{4}$"
}
关键字minLenght
、maxLength
和pattern
仅适用于字符串。如果该值不是字符串(并且为null(,则这些关键字不适用,因此将被忽略。
(我没有在这里检查你的正则表达式,只是复制了你已经有的。(