有没有人知道在preg_match中使用正则表达式如何在字符串中只允许数字,连字符( - )和空格?
这个表达足够好吗?
preg_match(' / [^ a-z \ s - ] / i',$ _POST ['电话'])
答案 0 :(得分:2)
不,它不够好,因为你认为世界上只有拉丁字母,白色字符和连字符!
最简单的方法是写下你需要的东西(而不是你不需要的东西):
preg_match('/^[0-9- ]+$/D', $_POST['phone']);
或
preg_match('/^[0-9-\s]+$/D', $_POST['phone']); // for any kind of white spaces
请注意量词+
重复字符类和锚点(^
表示开始,$
表示结束),以确保从开始到结束检查字符串。 D
修饰符避免在结尾处使用换行符(它为$
锚点提供了严格的含义,否则$
可以在最后一个换行符之前匹配字符串的结尾(一种奇怪的行为不是吗?))。