正则表达式匹配7-12位数;可能包含空格或连字符

时间:2010-01-19 17:56:34

标签: php regex

我一直试图解决PHP正则表达式问题一段时间,但我还是不能完成它。我需要编写一个匹配7到12位(0..9)的正则表达式,并且可以选择单个连字符或相邻数字之间的单个空格。这就是我到目前为止......

$match1 = preg_match('/^\d[0-9\-\s]{5,10}\d$/', $number);
$match2 = preg_match('/(-\s|\s-|--|\s\s)/', $number);

正如你所看到的,我必须使用两种不同的检查,但对我来说仍然不够,因为我可以输入这个字符串:“1-2-3-4-5”并且它仍然会通过,因为总共有9个字符但它应该失败,因为只有5位数。

对此事的任何帮助都会很棒,谢谢!

4 个答案:

答案 0 :(得分:2)

怎么样:

/^(\d[-\s]?){6,11}\d$/

答案 1 :(得分:2)

试试这个正则表达式:

/^\d(?:[-\s]?\d){6,11}$/

这允许七到十二个数字可以用连字符或空白字符分隔。

答案 2 :(得分:1)

^(?:\d[-\s]?){6,11}\d$

答案 3 :(得分:0)

试试这个正则表达式:

\d([-\s]?\d){6,11}