【发布时间】:2014-04-03 11:16:34
【问题描述】:
我正在尝试为 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
【问题讨论】:
-
我相信如果没有前瞻或一些编程(如果可能的话),这是非常不切实际的 - 问题是如果没有这些东西,您将不得不概述所有可能的有效 标记(
YYYY、DD、M等)的组合,以及您希望在其之间允许的任何字符放入标记之间的模式中......它很可能小于 8^ 8,(也许您可以将Ms 的检查合并到M{1,4}),但正则表达式可能不适合答案长度限制 - 不完全确定...如果它必须在 XSD 中,您可能运气不好。 -
@Code Jockey 我同意你的看法。日期格式本身是编程语言的一部分,而不是 XSD。但是,这次应该在 XSD 中完成 oops。无论如何,谢谢你的建议。
-
似乎是可能的,而且它 几乎 是一个合理的正则表达式......但在没有编程支持的情况下仍然不是最好的使用它,尽管 - 和 n.b.如果尝试添加时间值(
H/HH、m/mm等...),长度和复杂性将成倍增加。