2015-06-09 79 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$" 
}