我尝试“验证”日期字段。我只希望允许,数字和字符 - 字符

 $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"
       }

如果我尝试搜索“1960年”,然后确定。如果我尝试搜索“asdfg”然后也不行。 但是,如果我搜索“1960年/”,那么输出OK。我不明白为什么。

你能不能帮我修改,以检查用户是否只有“0-9”和“ - ”字符填写领域

感谢您

有帮助吗?

解决方案

您需要的“锚”的表达,即插入字符串的开头的字符串$标记^和结束。

 preg_match('/^[0-9-]+$/', $born_date);

然而,的preg_match不验证日期的方法。例如,上述将接受“99999999”等

其他提示

user187291的正则表达式将只匹配日期字符,这是你想要的。一个快速的方法来验证一个日期是尝试并通过转换为时间戳 strtotime()

if (strtotime($date_str)!==false) {
  // The date is valid.
}
$char_re_good = "/^[0-9-]+$/";

给一个尝试

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top