下面是mm/dd/yyyy格式的正则表达式。但是这个表达式也给出了mmddyyyy格式的真。它应该在没有'/'的情况下返回false。
有人能把它更改成所需的正则表达式吗?
/^(((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]|
1[0-9]|2[0-8]))[-/]?[0-9]{4}|02[-/]?29[-/]?([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|
([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$/发布于 2016-07-15 11:15:13
这就是你想要的
/^(((0[13-9]|1[012])[-/](0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]31|02[-/](0[1-9]|1[0-9]|2[0-8]))[-/][0-9]{4}|02[-/]29[-/]([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$/[-/]?将检查字符串中“/”是否出现0或1。[-/]将检查确切的1次出现。
发布于 2016-07-15 11:20:50
试试这个RegEx,它的工作原理
var date = "21062016";//"21/06/2016";
var rgexp = /(^(((0[1-9]|1[0-9]|2[0-8])[/](0[1-9]|1[012]))|((29|30|31)[/](0[13578]|1[02]))|((29|30)[/](0[4,6,9]|11)))[/](19|[2-9][0-9])\d\d$)|(^29[/]02[/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/;
var validate = rgexp.test(date);
alert(validate);
https://stackoverflow.com/questions/38394643
复制相似问题