我正在尝试在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
答案 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)?)?)?)?)?))
)[!@#%_\-=`~,\.\/;: ]*