【问题标题】:regex - check date formats正则表达式 - 检查日期格式
【发布时间】:2015-02-18 09:41:54
【问题描述】:

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

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

【问题讨论】:

    标签: php regex date


    【解决方案1】:

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

    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

    【讨论】:

    • 感谢您的回复!如果可能,再问一个问题。我如何也可以通过/或 - 将日期拆分为数组?我正在使用 $dob = preg_split('//|- /', $dob)
    • preg_split('~[/-]~', $dob)
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多