Javascript 哪个正则表达式模式用于检查日期格式';年月日';

Javascript 哪个正则表达式模式用于检查日期格式';年月日';,javascript,regex,Javascript,Regex,我想检查日期格式是否为dd-mm-yyyy。这样我就可以改变它了 if (date.match("/^\d{2}-\d{2}-\d{4}$/")) //dd-mm-yyyy return value.replace(/(\d\d)\-(\d\d)\-(\d{4})/, "$3-$2-$1"); //yyyy-mm-dd` 因此,检查日期格式,哪种模式是正确的。在下面的regexp中,我检查日期是01-31,月份是01-12,年份是1900-2099。如果是这样,将进行更换,并将导致yyyy-m

我想检查日期格式是否为dd-mm-yyyy。这样我就可以改变它了

if (date.match("/^\d{2}-\d{2}-\d{4}$/")) //dd-mm-yyyy
return value.replace(/(\d\d)\-(\d\d)\-(\d{4})/, "$3-$2-$1"); //yyyy-mm-dd`

因此,检查日期格式,哪种模式是正确的。

在下面的regexp中,我检查日期是01-31,月份是01-12,年份是1900-2099。如果是这样,将进行更换,并将导致yyyy-mm-dd

功能更改(输入){
返回输入。替换(/^((?:0[1-9]|[12]\d|3[01])-((?:0[1-9]| 1[012])-((?:19\d\d | 20\d\d))$/,“$3-$2-$1”);
}
功能检查(输入){
//如果要接受0000-9999年,请将“(?:19\d\d|20\d\d)”替换为“\d{4}”
返回/^(?:0[1-9]|[12]\d|3[01])-(?:0[1-9]| 1[012])-(?:19\d\d | 20\d\d)$/。测试(输入)
}
控制台日志(更改(“01-10-1922”);
控制台日志(“01-10-2011”,检查(“01-10-2011”);//真的
控制台日志(“2011-10-01”,检查(“2011-10-01”);//假的

控制台日志(“01-21-2011”,检查(“01-21-2011”);//false
我认为这应该适合你

if (date.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/)){
      return date.replace(/(\d\d)\-(\d\d)\-(\d{4})/, "$3-$2-$1");
}

您所做的替换将有效,但您也应该考虑DD MM YYYY中的日期X-Y-ZZZ,或者在左边输入填充零点的断言,如果日期是从某个源提取的,它遵循“X”模式而不是“0X”,上面的正则表达式应该处理过

使用日期库,而不是正则表达式。不能为有效日期定义有用的模式,只能检查值是否正确,以及它们是否使用了正确的符号。但是,您无法轻松验证诸如
30-02-2019
31-04-2019
之类的内容。如果您去掉正则表达式周围的双引号(If条件中的第一个引号),将它们变成字符串,那么它可能已经按照您的预期工作了。@VLAZ当您只想检查字符串是否为指定的简单格式时,不需要加载库。对于其他类型的日期操作,库可能是有意义的。输入日期对我来说总是正确的。我只需要检查一下它是什么格式in@AD不需要先检查它,然后使用几乎相同的正则表达式替换它。这一切都可能发生在replace regexp中,因为它只会在regexp匹配的情况下替换某些内容。如果不匹配,它将原封不动地返回字符串。如果您只想测试它是否为预期格式,那么可以使用相同的regexp,或者更简单一点(不分组)
/(:0[1-9]|[12]\d[3[01])-(?:0[1-9]| 1[012])-(?:19\d\d | 20\d\d)$/。测试(“04-10-2019”)
谢谢,非常需要。处理日期、月份和年份及其在dd-mm-yyyy中的值和位置