2017-05-05 35 views
1

我正在構建一個json請求模式。模式中我的一個約束是,firstLetter的值應該只包含1個字符,小寫或大寫。我嘗試了以下內容(它是模式的片段):Json模式正則表達式

"firstLetter": { 
     "id": "/properties/firstLetter", 
     "maxLength": 1, 
     "minLength": 1, 
     "pattern": "[a-z][A-Z]", 
     "type": "string" 
    } 

但它似乎並不奏效。我也想正則表達式規則應該只有1個字符

+1

嘗試' 「^ [A-ZA-Z] $」'或(如果在使用稍後的XSD架構)'「[a-zA-Z]」' –

+1

或者使用'[a-zA-Z] {1}'匹配單個字符。 –

+0

@lualover,我的答案是否適合你?如果是,請考慮接受。否則,請讓結果知道。 –

回答

2

Acc。到6.8. pattern section of JSON Schema Validation: A Vocabulary for Structural Validation of JSON

此關鍵字的值必須是一個字符串。根據ECMA 262正則表達式方言,這個字符串應該是一個有效的正則表達式。

如果正則表達式與實例成功匹配,則認爲字符串實例有效。回想一下:正則表達式並不是隱含的錨定。

您可以使用

"pattern": "^[a-zA-Z]$" 

它將匹配正好1個字母串,僅包括一個ASCII字母。

注意maxLengthminLength成爲多餘的,這個表達式驗證,所以你可以將代碼再壓縮到

"firstLetter": { 
    "id": "/properties/firstLetter", 
    "pattern": "^[a-zA-Z]$", 
    "type": "string" 
} 
+0

如果例如某人發送了一個請求,比如「firstLetter」:「ab」 – lualover2017

+0

我按照[此JSON模式1.0文檔]更新了模式(https://spacetelescope.github.io /understanding-json-schema/reference/regular_expressions.html)和[JSON模式](http://json-schema.org/example2.html)。 –

+0

現在,我認爲它是完整的。對不起,我剛開始用XML Schema誤認了JSON模式。 –