2013-11-28 225 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