我需要滿足一個要求,只接受MM/DD/YYYY形式的值。如何在XSD架構中正確轉義正則表達式模式?
從我讀過關於:https://www.w3.org/TR/xmlschema11-2/#nt-dateRep 使用
<xs:simpleType name="DATE">
<xs:restriction base="xs:date"/>
</xs:simpleType>
是行不通的爲正則表達式顯然是不支持這種格式。
我發現和調整,這種格式:
^(?:(?:(?:0?[13578]|1[02])(\/)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
這種形式:
\^\(\?:\(\?:\(\?:0\?\[13578\]\|1\[02\]\)\(\\/\)31\)\1\|\(\?:\(\?:0\?\[1,3-9\]\|1\[0-2\]\)\(\\/\)\(\?:29\|30\)\2\)\)\(\?:\(\?:1\[6-9\]\|\[2-9\]\d\)\?\d{2}\)$\|\^\(\?:0\?2\(\\/\)29\3\(\?:\(\?:\(\?:1\[6-9\]\|\[2-9\]\d\)\?\(\?:0\[48\]\|\[2468\]\[048\]\|\[13579\]\[26\]\)\|\(\?:\(\?:16\|\[2468\]\[048\]\|\[3579\]\[26\]\)00\)\)\)\)$\|\^\(\?:\(\?:0\?\[1-9\]\)\|\(\?:1\[0-2\]\)\)\(\\/\)\(\?:0\?\[1-9\]\|1\d\|2\[0-8\]\)\4\(\?:\(\?:1\[6-9\]\|\[2-9\]\d\)\?\d{2}\)$
現在我不再獲得無效的轉義XML編輯器錯誤(使用XML間諜),但我得到這一個:
invalid-escape: The given character escape is not recognized.
我已經根據這裏的XML模式規範做了轉義: https://www.w3.org/TR/xmlschema-2/#regexs F.1.1節有一個轉義表。
任何人都可以請幫助指出這個權利?
謝謝!
XSD正則表達式不知道'^'和'$',我猜你不需要轉義'/'。嘗試'(?:(?:(?:(?: 0?[13578] | 1 [02])(/)31)\ 1 |(?:(?: 0?[13-9] | 1 [0 -2])(/)(?: 29 | 30)\ 2))(:(?: 1 [6-9] | [2-9] \ d)\ d {2})|?(?: ?0 2(/)29 \ 3(:(:(?: 1 [6-9] |?[2-9] \ d)(?:0 [48] | [2468] [048] | [ 13579] [26])|(:(?: 16 |?[2468] [048] | [3579] [26])00))))|(:(?: 0 [1-9])?| ?(?:1 [0-2]))(/)(?: 0 [1-9] | 1 \ d | 2 [0-8])\ 4(:(?: 1 [6-9] | [2-9] \ d)?\ d {2}))' –
不工作,它給了我這個錯誤:unexpected-metaChar:元字符「。」,「\」,「?」,「*」 「+」,「{」,「}」,「(」,「)」,「|」,「[」和「]」不能在此位置不轉義。 – Carmageddon
請注意,我在原始問題中提出的轉義形式給了我一個不同的錯誤:invalid-escape:給定的字符轉義不被識別。這可能表明我需要以某種方式定義轉義字符在什麼地方。 – Carmageddon