尝试编写使用RegEx验证项目值的JSON模式。
有一个名为 progBinaryName 的项目,该项目的值应预适应此RegEx字符串"^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"。
"^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
找不到任何实际解释JSON模式中RegEx用法的教程或示例。
任何帮助/信息将不胜感激!
感谢:D
JSON架构
{ "name": "string", "properties": { "progName": { "type": "string", "description": "Program Name", "required": true }, "ID": { "type": "string", "description": "Identifier", "required": true }, "progVer": { "type": "string", "description": "Version number", "required": true }, "progBinaryName": { "type": "string", "description": "Actual name of binary", "patternProperties": { "progBinaryName": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$" }, "required": true } } }
错误:
警告!更好地检查您的JSON。
实例不是必需的类型-http://json-schema.org/draft-03/hyper-schema#
架构是有效的JSON,但不是有效的架构。
验证结果:失败
[ { "level" : "warning", "schema" : { "loadingURI" : "#", "pointer" : "" }, "domain" : "syntax", "message" : "unknown keyword(s) found; ignored", "ignored" : [ "name" ] }, { "level" : "error", "domain" : "syntax", "schema" : { "loadingURI" : "#", "pointer" : "/properties/ID" }, "keyword" : "required", "message" : "value has incorrect type", "expected" : [ "array" ], "found" : "boolean" }, { "level" : "error", "domain" : "syntax", "schema" : { "loadingURI" : "#", "pointer" : "/properties/progBinaryName" }, "keyword" : "required", "message" : "value has incorrect type", "expected" : [ "array" ], "found" : "boolean" }, { "level" : "error", "schema" : { "loadingURI" : "#", "pointer" : "/properties/progBinaryName/patternProperties/progBinaryName" }, "domain" : "syntax", "message" : "JSON value is not a JSON Schema: not an object", "found" : "string" }, { "level" : "error", "domain" : "syntax", "schema" : { "loadingURI" : "#", "pointer" : "/properties/progName" }, "keyword" : "required", "message" : "value has incorrect type", "expected" : [ "array" ], "found" : "boolean" }, { "level" : "error", "domain" : "syntax", "schema" : { "loadingURI" : "#", "pointer" : "/properties/progVer" }, "keyword" : "required", "message" : "value has incorrect type", "expected" : [ "array" ], "found" : "boolean" } ]
Problem with schema#/properties/progBinaryName/patternProperties/progBinaryName : Instance is not a required type Reported by http://json-schema.org/draft-03/hyper-schema# Attribute "type" (["object"])
要针对RegEx测试字符串值(不是属性名称),应使用"pattern"关键字:
"pattern"
{ "type": "object", "properties": { "progBinaryName": { "type": "string", "pattern": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$" } } }
PS-如果您希望模式与属性的 键 (而不是值)相匹配,则应使用"patternProperties"(就像"properties",但键是RegEx)。
"patternProperties"
"properties"