我试图了解下面代码段的Json架构定义,
"translated_string": {
"description": "A translated string",
"type": "string",
"minLength": 1,
"not": {
"type": "string",
"pattern": "^\\s+$"
}
},
问题:
\\s
代表什么。
通过提供一些示例有效架构来解释代码段。
答案 0 :(得分:3)
在正则表达式语法中,\s
是表示空格的元字符(请参阅Shorthand Character Classes)。在某些语言中,由于斜杠(\\s
),您需要对其进行双重转义。
让我们分析正则表达式:
^
是字符串的开头\\s
是空格+
是一个含有“一个或多个”$
是字符串的结尾因此模式匹配仅由至少一个空格组成的字符串,仅此而已。
现在让我们分析一下片段:
"description"
只是与translated_string
属性"type": "string"
表示在JSON中,您只能使用translated_string
属性的字符串值"not"
表示以下不允许:
"pattern": "^\\s+$"
是上面的正则表达式(因此必须不匹配)请注意,该代码段相当于:
"translated_string": {
"description": "A translated string",
"type": "string",
"not": {
"type": "string",
"pattern": "^\\s*$"
}
},
(*
运算符表示“零或更多”)或甚至更简单:
"translated_string": {
"description": "A translated string",
"type": "string",
"pattern": "^\\S+$"
},
(其中\\S
不是空格)
因此,以下JSON 正确:
"translated_string": "l"
"translated_string": " l"
"translated_string": " l "
"translated_string": " l "
以下JSON 不正确:
"translated_string": ""
"translated_string": " "
"translated_string": " "
"translated_string": 1
"translated_string": [ SOMETHING ]
"translated_string": { SOMETHING }