我正在使用Everit来检查java应用程序中的一些json,我在检查期间和其他在线验证器中都有这个问题。
json请求包含字符串abcdef&©
,其中一个字符与正则表达式©
不匹配。正则表达式应该能够匹配任何字母数字字符串和&符号。
{"type":"sector","attributes":{"name":"abcdef&©"}}
正则表达式在pattern
下的json模式中定义。在这种情况下,我们使用模式:[a-zA-Z0-9\u0026]+
(unicode字符用于&符号)来验证上面的JSON。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://example.com/example.json",
"type": "object",
"definitions": {},
"properties": {
"attributes": {
"properties": {
"name": {
"pattern": "[a-zA-Z0-9\u0026]+",
"id": "/data/properties/attributes/name",
"type": "string"
}
}
},
"objecttype": {
"pattern": "sector",
"id": "/data/properties/type",
"type": "string"
}
},
"required": [
"type",
"attributes"
]
}
有趣的是,如果我另外使用版权符号,则正则表达式会将此作为成功验证,如果我尝试单独验证它,则正则表达式会将此验证为失败。如何确保使用除我指定的字符之外的任何字符都会导致失败?
{"type":"sector","attributes":{"name":"abcdef&©"}}
{"type":"sector","attributes":{"name":"©"}}