preg_match - 只能由数字,连字符( - )和空格组成

时间:2014-05-19 20:57:56

标签: php regex preg-match

有没有人知道在preg_match中使用正则表达式如何在字符串中只允许数字,连字符( - )和空格?

这个表达足够好吗?

preg_match(' / [^ a-z \ s - ] / i',$ _POST ['电话'])

1 个答案:

答案 0 :(得分:2)

不,它不够好,因为你认为世界上只有拉丁字母,白色字符和连字符!

最简单的方法是写下你需要的东西(而不是你不需要的东西)

preg_match('/^[0-9- ]+$/D', $_POST['phone']);

preg_match('/^[0-9-\s]+$/D', $_POST['phone']); // for any kind of white spaces

请注意量词+重复字符类和锚点(^表示开始,$表示结束),以确保从开始到结束检查字符串。 D修饰符避免在结尾处使用换行符(它为$锚点提供了严格的含义,否则$可以在最后一个换行符之前匹配字符串的结尾(一种奇怪的行为不是吗?))