JSON模式不支持某些正则表达式模式

时间:2018-07-12 09:50:24

标签: json jsonschema

  

我的Json模式:

{
   "type" : "object" ,
   "properties" : {
      "status" : {
        "type" : "string" ,
        "pattern" : "(OPEN|CLOSE)/i"
      } ,
      "phone" : {
        "type" : "string" ,
        "pattern" : "[0-9a-zA-Z_\\s]+"
    }
  }
}
  

我的输入:

{
   "status" : "open" ,
   "phone" : "9080245591"
}

我尝试使用json模式检查输入,但是json验证器抛出以下错误。 pattern值是错误的。因此如何解决。 并且也会引发String 'open' does not match regex pattern '(OPEN|CLOSE)/i'.这个错误

1 个答案:

答案 0 :(得分:2)

我在您的架构中发现了两个问题:

  1. 当前,该规范不允许您为大小写不敏感的匹配指定诸如/i之类的标志。您可以通过将标志添加到表达式本身(?i)中来解决此问题。
  2. 您要指定InBasicLatin字符集。应该IsBasicLatin

固定模式:

{
   "type" : "object" ,
   "properties" : {
      "status" : {
        "type" : "string" ,
        "pattern" : "^(?i)(OPEN|CLOSE)$"
      } ,
      "phone" : {
        "type" : "string" ,
        "pattern" : "[0-9a-zA-Z_\\-\\.\\$@\\?\\,\\:\\'\\/\\!\\P{IsBasicLatin}\\s]+"
    }
  }
}

注意:我对phone的模式不了解,所以我只是解决了错误,但没有碰到它。