2010-01-19 16 views
0

我一直在嘗試解決一段時間的PHP正則表達式問題,但我無法完成它。我需要編寫一個匹配7和12位數字(0..9)的正則表達式,並且可以選擇在相鄰數字之間使用單個連字符或單個空格。這是我迄今爲止...正則表達式匹配7-12位數字;可能包含空格或連字符

$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個數字。

在這件事上的任何幫助將是偉大的,謝謝!

回答

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

+1由11秒打我吧! – slebetman 2010-01-19 17:59:45

+0

啊..你沒有意識到[ - \ s]是可選的。所以我確實把你打敗了;-) – slebetman 2010-01-19 18:01:00

2

試試這個正則表達式:

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

這使得七到十二個數字可以用連字號或空格字符分隔。

+0

+1把個位數字放在第一位,而不是最後一位。只是個人喜好 – 2010-01-19 18:02:43

0

試試這個正則表達式:

\d([-\s]?\d){6,11} 
相關問題