Preg匹配日期字段验证

1 php regex preg-match

我尝试"验证"日期字段.我只想允许,数字字符和 - 字符.

 $born_date=$_POST['date'];
 $goodchars = array("1","2","3","4","5","6","7","8","9","0","-");
 $char_re_good = '/['.preg_quote(join('', $goodchars), '/').']/';
       if (!(preg_match($char_re_good, $born_date))) {
            echo "not ok, contain INVALID chars"
       }else{
            echo "ok, contain valid chars"
       }
Run Code Online (Sandbox Code Playgroud)

如果我试图搜索"1960"然后确定.如果我试图搜索"asdfg"然后不行.但如果我搜索"1960 /",那么输出就可以了.我不明白为什么.

你能帮我修改一下,检查用户是否只填写"0-9"和" - "字符.

谢谢

use*_*291 7

你需要"锚定"你的表达式,即插入字符串的开始^和字符串$ markers的结尾.

 preg_match('/^[0-9-]+$/', $born_date);
Run Code Online (Sandbox Code Playgroud)

但是,preg_match不是验证日期的方法.例如,以上将接受"99999999"等


lee*_*ers 5

user187291的正则表达式只匹配日期字符,这就是你想要的.验证日期的快捷方法是尝试通过strtotime()以下方式将其转换为时间戳:

if (strtotime($date_str)!==false) {
  // The date is valid.
}
Run Code Online (Sandbox Code Playgroud)