题
我尝试“验证”日期字段。我只希望允许,数字和字符 - 字符
$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-]+$/";
给一个尝试
不隶属于 StackOverflow