我尝试"验证"日期字段.我只想允许,数字字符和 - 字符.
$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"和" - "字符.
谢谢
你需要"锚定"你的表达式,即插入字符串的开始^和字符串$ markers的结尾.
preg_match('/^[0-9-]+$/', $born_date);
Run Code Online (Sandbox Code Playgroud)
但是,preg_match不是验证日期的方法.例如,以上将接受"99999999"等
user187291的正则表达式只匹配日期字符,这就是你想要的.验证日期的快捷方法是尝试通过strtotime()以下方式将其转换为时间戳:
if (strtotime($date_str)!==false) {
// The date is valid.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |