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

Php 正则表达式匹配7-12位数字;可能包含空格或连字符,php,regex,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); 如您所见,我必须使用两种不同的检查,但这对我来说仍然不够,

我一直在试图解决一个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个数字

在这件事上有任何帮助都会很好,谢谢

那么:

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

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

请尝试以下正则表达式:

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

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

尝试以下正则表达式:

/^\d(?:[-\s]?\d){6,11}$/
这允许用连字符或空格字符分隔七到十二个数字。

试试这个正则表达式:

\d([-\s]?\d){6,11}
试试这个正则表达式:

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

啊。。您没有意识到[-\s]是可选的。所以我比你先到;-)啊。。您没有意识到[-\s]是可选的。所以我比你先到;-)+1将一位数放在第一位,而不是最后一位。这只是个人偏好+1,将个位数放在第一位,而不是最后一位。这只是个人喜好