XSD模式限制中日期格式本身的正则表达式

时间:2014-04-03 11:16:35

标签: regex xml xsd xsd-1.0

我正在尝试在XSD 1.0模式限制中为日期格式制作正则表达式。

我想查看日期'格式'无效,不是日期值。

我想检查的日期格式是;

Year:  YYYY or YY
Month: MM or M or MMM or MMMM
Day: D or DD
and has zero or unbounded of . / ; (just space) ! @

例如,以下值为vaild;

MMM. D. YYYY
MM/DD/YYYY
DD/MM.YYYY
YYMM DD

以下无效;

dd%mmYYYY
20140404
YYYY-MM-YYYY-DD

我做了一个正则表达但有问题。它将'YYYY-MM-YYYY'检查为有效(重复YYYY)

([!@#%_\-=`~,\.\/;: ]*(YYYY|YY|M|MM|MMM|MMMM|D|DD)[!@#%_\-=`~,\.\/;: ]*)+

如果只有一个YYYY|YY|M|..D|DD?

,我如何进行正则表达式检查

XML架构1.0 / Xercers-J

1 个答案:

答案 0 :(得分:1)

好吧,尽管它在口中加入了不好的味道甚至将其粘贴到答案盒中,但我认为这可能是你正在寻找的东西(你的滚动条今天会得到合理的锻炼) )...

(([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?)))[!@#%_\-=`~,\.\/;: ]*

知道了吗?这可以分解为令牌类型(年,月或日)可以出现的顺序的9种可能性(如果我理解正确的话)...我可以解释你是否要求,但不要想浪费时间,如果没有人感兴趣 - 即使有人绊倒这个答案,评论并要求解释就足够了 - 请告诉我。

(

([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|

([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|

([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?))|

([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|

([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|

([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?))

)[!@#%_\-=`~,\.\/;: ]*