Sai*_*Sai 0 regex xml xsd date
我想知道日期dd-mm-yyyy格式的正则表达式.规则是
·day·value必须不超过30,如果·month·是4,6,9或11中的一个,如果·month·是2,则不超过28且·year·不能被4整除,或者可以整除100,但不是400,如果·月·是2,则不超过29,·年·可以被400整除,或者被4整除但不能被100整除.
我想在我的xsd中使用xml正则表达式.
接受 - 29-02-2000, 31-05-2013, 30-04-2012
拒绝 - 29-02-1900, 31-04-2013, 30-02-2000
我实际上有这个正则表达式,我做了一段时间作为与我的朋友的竞争!
以下是我的朋友,大约快20%:
^(?!00)((([0-2]\d|3[01])-(0[13578]|1[02])|([0-2]\d|30)-(0[469]|11)|([01]\d|2[0-8])-02)-\d{4}|([01]\d|2\d)-02-(([02468][048]|[13579][26])(?=00)|\d{2}(?!00))([02468][048]|[13579][26]))$
Run Code Online (Sandbox Code Playgroud)
虽然这个是最短的(适合推特,这是我的挑战):
^(?!(00|30-02))(((?=.+(?!00)([02468](?=[048](00)?$)|[13579](?=[26](00)?$)))|(?!29-02))[012]\d|30|31(?!-(0[2469]|11)))-(0[1-9]|1[012])-\d{4}$
Run Code Online (Sandbox Code Playgroud)
请注意yyyy = 0000,根据格里高利历,两个正则表达式都无法验证,它不是有效年份.
两个正则表达式都没有外观和条件,因为它必须在javascript中工作.
编辑:
由于你需要这个用于XML,我已经修改了第一个正则表达式,它只需要稍微修改就可以摆脱外观.
((0[1-9]|[1-2]\d|3[01])-(0[13578]|1[02])|([0-2]\d|30)-(0[469]|11)|(0[1-9]|1\d|2[0-8])-02)-\d{4}|(0[1-9]|[12]\d)-02-(([02468][048]|[13579][26])00|(\d{2}([02468][48]|[2468][048]|[13579][26])))
Run Code Online (Sandbox Code Playgroud)
我希望这适合你.