1

我正在尝试为 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) ! @

例如,以下值是有效的;

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

4

1 回答 1

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)?)?)?)?)?))

)[!@#%_\-=`~,\.\/;: ]*
于 2014-04-03T13:16:47.680 回答