正则表达式 - 检查日期格式

regex - check date formats

我需要一些帮助。我有一个输入字段,我想检查用户是否以这些格式输入了他的出生日期:dd/mm/yyyydd-mm-yyyy

if(preg_match('/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/', $_POST['dob'])){
    // ok
} else {
    // there's an error
}

如何更改正则表达式以匹配数字之间的 '/''-'

将匹配日期格式的模式放在由交替运算符分隔的非捕获组中。

if(preg_match('~^[0-9]{2}(?:-[0-9]{2}-[0-9]{4}|/[0-9]{2}/[0-9]{4})$~', $_POST['dob'])){
    // ok
} else {
    // there's an error
}

使用捕获组,然后通过反向引用来引用捕获字符。

if(preg_match('~^[0-9]{2}([-/])[0-9]{2}[0-9]{4}$~', $_POST['dob'])){
    // ok
} else {
    // there's an error
}

DEMO 1

DEMO 2