Php 如何区分日期格式为dd/mm/yy或dd/mm/yyyy?

Php 如何区分日期格式为dd/mm/yy或dd/mm/yyyy?,php,regex,validation,date,date-formatting,Php,Regex,Validation,Date,Date Formatting,我正在尝试访问给定日期值的格式。我需要检查格式是dd/mm/yy还是dd/mm/yyyy。我在preg_match()中使用了以下模式,但它们不起作用 '^\d{1,2}\/\d{1,2}\/\d{4}^' // dd/mm/yyyy '^\d{1,2}\/\d{1,2}\/\d{2}^' // dd/mm/yy 有人能帮我找到正确的模式吗?问题: 1。此$应该在末尾,而不是^$表示字符串的结尾 2.不要忘记分隔符/ 正则表达式: /^\d{1,2}\/\d{1,2}\/\d{4}$

我正在尝试访问给定日期值的格式。我需要检查格式是
dd/mm/yy
还是
dd/mm/yyyy
。我在
preg_match()
中使用了以下模式,但它们不起作用

'^\d{1,2}\/\d{1,2}\/\d{4}^'  //  dd/mm/yyyy

'^\d{1,2}\/\d{1,2}\/\d{2}^'  //  dd/mm/yy

有人能帮我找到正确的模式吗?

问题:

1。
$
应该在末尾,而不是
^
<代码>$表示字符串的结尾

2.不要忘记分隔符
/

正则表达式:

/^\d{1,2}\/\d{1,2}\/\d{4}$/
用于
10/10/1111

/^\d{1,2}\/\d{1,2}\/\d{2}$/
用于
10/10/11


正则表达式的语法有错误。在正则表达式中,模式的开头由^表示,而结尾由$表示

您可以使用以下命令验证给定的日期格式

$date_to_check = "22/06/2017";
$true = preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/", $date_to_check);
var_dump($true);
但是,您不应该仅根据正则表达式验证日期。您需要将年、月、日传递给php的checkdate()函数以真正验证它


这是一个由简单的印刷错误引起的错误,可以通过在www.regex101.com上测试或快速研究regex语法/阅读SO页面来识别。这种模式和被接受的答案充其量只能对日期进行松散的验证。换句话说,像
99/99/9999
这样的无效日期将毫无问题地匹配。为了获得最佳结果,请使用
checkdate()
或DateTime类函数来验证日期。请注意,最好的函数不使用正则表达式,而那些只会随着模式的指数增长而提高质量的函数。使用正则表达式并不是检查日期的最佳工具。