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

时间:2015-02-18 09:41:55

标签: php regex date

我想请一些帮助。我有输入字段,我想检查用户是否以这些格式输入了他的出生日期: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
}

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

1 个答案:

答案 0 :(得分:0)

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

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}\1[0-9]{4}$~', $_POST['dob'])){
    // ok
} else {
    // there's an error
}

DEMO 1

DEMO 2