2015-06-09 28 views
3

以下JSON对象是有效的:JSON(模式)与模式转义字符验证失败

{ 
    "foo": "bar", 
    "pattern": "^(\/?[-a-zA-Z0-9_.]+)+$" 
} 

而这个人是

{ 
    "foo": "bar", 
    "pattern": "^(\/?[-a-zA-Z0-9_.]+)+\.jpg$" 
} 

这是逃脱\.),但我不明白为什么这不应该是有效的JSON。我需要将这些模式包含在我真正的JSON模式中。这里的正则表达式要复杂得多,并且没有办法忽略掉,特别是点。

BTW,逃避hypens字符类[a-z\-]休息验证为好。

我该如何解决这个问题?

编辑:我用http://jsonlint.com/,http://jsonvalidator.mytechlabs.com/和一对节点库。

回答

3

你需要在这里加倍逃避。斜杠是json中的转义字符,所以你不能逃脱点(因为它看到它),而是你需要逃避反斜杠,所以你的正则表达式与\.一样出来应该是这样的(json在转义后期待保留字符即一个报价或其他斜线或其他)。

// passes validation 
{ 
    "foo": "bar", 
    "pattern": "^(/?[-a-zA-Z0-9_.]+)+\\.jpg$" 
}