2017-06-21 36 views
0

パターン付きのjsonスキーマで人間の入力を検証したいと思いますが、正規表現を認識できません。jsonスキーマパターンの正規表現

有効な形式は以下のとおりです。

"ジョー": "1日目"、 "ミッチ": "2日目"

または

"ジョー":だから、 "1日目"

任意の数「誰か」の繰り返し:「いつか」、(カンマ)で区切られています。

無効な形式は次のとおりです。

"ジョー": "1日目"、 "ミッチ": "2日目"、

それとも

"ジョー": "1日目"; "ミッチ":」 2" 日目

例JSONスキーマ(パターンがここで働いていません):

{ 
    "title": "Test", 
    "type": "object", 
    "properties": { 
"meeting_date": { 
      "type": "string", 
      "description": "Give me a name and a day with the following format: \"Joe\":\"day1\" ", 
      "default": "", 
      "pattern": "(\"\\w*\")(?::)(\"\\w*\")" 
     } 
     } 
} 
+0

あなたは '{ "ジョー" が検証したいですか: "day2"} "または" {value: "\" Joe \ ":\" day1 \ "、\" mitch \ ":\" day2 \ ""} – bato3

+0

"Joe" 、 "Mitch": "day2" – andrasbacsai

答えて

1

https://regex101.com/r/vW8m6K/2/

^("\w+":"\w+",)*"\w+":"\w+"$ 

このソリューションを試してみてください。しかし、それはテストのためには、余分なスペースに失敗: "1日目"、 "ミッチ":

^("\w+"\s*:\s*"\w+"\s*(?:,\s*|$))+$ 
+0

余分なスペースは問題ではない、それは完璧です。ありがとう。今分かります。 :) – andrasbacsai

0

あなたのパターンacutallyほとんど作品。引用符の前にバックスラッシュを付けるだけで済みます。

("\w*")(?::)("\w*") 

あなたはhttps://regex101.com/(またはいくつかのまねウェブサイト)上で、あなたの正規表現をテストすることができます。

+0

これはカンマ区切りと最後に余分なカンマがないかどうかをチェックしません。質問に2つの無効な形式を追加しました。 – andrasbacsai