2013-11-28 198 views
0

我想創建一個正則表達式來驗證一個XML元素。我對正則表達式相當陌生。XSD RegEx驗證

我想要實現的格式爲[月份名稱] [] [日]

例如, 「1月1日」

這裏是我試過了。

<xs:simpleType> 
    <xs:restriction base="xs:string"> 
    <xs:pattern value="([January]|[February]|[March]|[April]|[May]|[June]|[July]|[August]|[September]|[October]|[November]|[December])[ ]([1-9]|[1-2][0-9]|[3][0-1])"/> 
    </xs:restriction> 
</xs:simpleType> 

上述代碼不適用於我。我懷疑我檢查月份名稱的方式是錯誤的。我有可能比較整個字符串的價值嗎?或者我必須按照價值=「([J] [a] [n] [u] [a] [r] [y] | [F] [e] [b] ...) ?

+0

方括號中一個正則表達式包含一個備選單字符的列表,例如[ABC]匹配「A」或「B」或「C」,所以它相當於(A | B | C)。 –

回答

1

我懷疑有短形式的匹配你在找什麼,但這應該做的工作:

(January|February|March|April|May|June|July|August|September|October|November|December)\s?([1-9]|[12][0-9]|3[01])\b

你檢查月份名稱,0個或多個空白字符,然後一個月整的有效日期

這裏有一個PCRE正則表達式的工作示例:http://regex101.com/r/cQ9nK8

+0

謝謝,這個作品完美。 – user2763890

+0

一個捕獲 - 它不夠聰明,以超過日曆天數失效數月;你需要放置一個條件'(condition1 | condition2)'類型的語句來監視它。但是,鑑於你匹配的日期字符串,這應該是足夠的。 – brandonscript