我想验证欧洲日期格式,如“10.02.2012”或“10-02-2012”。因此我创建了以下正则表达式:
/\d[0-9]{2}(.|-)\d[0-9]{2}(.|-)\d[0-9]{4}/
不幸的是,即使日期格式正确,我总是收到无效的消息。
当我用“。”替换“(。|-)”时 对于仅验证用点分隔的日期,它可以工作。所以我想问题一定是“(。|-)”有什么想法吗?
我想验证欧洲日期格式,如“10.02.2012”或“10-02-2012”。因此我创建了以下正则表达式:
/\d[0-9]{2}(.|-)\d[0-9]{2}(.|-)\d[0-9]{4}/
不幸的是,即使日期格式正确,我总是收到无效的消息。
当我用“。”替换“(。|-)”时 对于仅验证用点分隔的日期,它可以工作。所以我想问题一定是“(。|-)”有什么想法吗?
请注意,到目前为止使用 \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}$
好的,我看到你的问题...
/\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}/
但不要同时使用