Регулярное выражение для 7-12 цифр; может содержать пробел или дефис

Я уже давно пытаюсь решить проблему регулярного выражения 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]?\d){6,11}$/ 

Это позволяет от семи до двенадцати цифр, которые могут быть разделены дефисом или символом пробела.

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

Попробуйте это регулярное выражение:

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