我想验证欧洲日期格式,例如“10.02.2012”或“10-02-2012”。因此我创建了以下正则表达式:
/\d[0-9]{2}(.|-)\d[0-9]{2}(.|-)\d[0-9]{4}/
不幸的是,即使日期格式正确,我也总是收到消息无效的消息。
当我用“。”替换“(。| - )”时。仅用于验证用点分隔的日期。所以我想问题必须是“(。| - )” 有什么想法吗?
答案 0 :(得分:9)
请注意,到目前为止使用\ d字符类提供的答案将允许通过00.00.0000或99.99.9999等日期。如果你想抓住这个,你需要使用更具体的正则表达式。下面的那个将允许在01.01.1900和31.12.2099之间的有效日期
^([1-9]|0[1-9]|[12][0-9]|3[01])[-\.]([1-9]|0[1-9]|1[012])[-\.](19|20)\d\d$
如果您想允许从0000到9999的任何年份,那么您可以将其更改为
^([1-9]|0[1-9]|[12][0-9]|3[01])[-\.]([1-9]|0[1-9]|1[012])[-\.]\d{4}$
答案 1 :(得分:3)
答案 2 :(得分:1)
好的,我看到了你的问题...
/\d[0-9]{2}(.|-)\d[0-9]{2}(.|-)\d[0-9]{4}/
是多余的,因为\ d与[0-9]相同,所以实际上你在这里匹配3位数而不是2.尝试
/\d{2}(\.|-)\d{2}(\.|-)\d{4}/
或
/[0-9]{2}(\.|-)[0-9]{2}(\.|-)[0-9]{4}/
但不要同时使用