【问题标题】:regular expression for date format itself in XSD pattern restrictionXSD 模式限制中日期格式本身的正则表达式
【发布时间】: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

【问题讨论】:

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

标签: regex xml xsd xsd-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)?)?)?)?)?))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多