2016-03-20 55 views
0

我需要使用正則表達式檢查/替換表單字段中的電話號碼,它應該很簡單。 我無法找到在此格式解決方案:正則表達式 - 簡單的電話號碼驗證

「場所數」
這樣: 「0521 123456789」

不應該有其他的工作。沒有特殊的字符,沒有國家等
只是「0521 123456789」

如果有人能提供解決方案,我不是專家,正則表達式(和PHP)將是偉大的。

回答

3

您可以使用下面的正則表達式:

^0[1-9]\d{2}\s\d{9}$ 

,將匹配它,它是如何準確

Live Demo on RegExr


它是如何工作的:

^  # String Starts with ... 
0  # First Digit is 0 
[1-9] # Second Digit is from 1 to 9 (i.e. NOT 0) 
\d{2} # 2 More Digits 
\s  # Whitespace (use a [Space] character instead to only allow spaces, and not [Tab]s) 
\d{9} # Digit 9 times exactly (123456789) 
$  # ... String Ends with 
+0

好吧,我試圖用「\ d {3,5} \ S \ d {4,14}「導致前綴(即0521)有時更長等等,但仍然有一點點錯誤,特殊的char +被接受,正則表達式應該檢查是否只有使用數字 –

+0

@DanielMcDonald你需要[錨](http://www.regular-expressions.info/anchors.html)模式:'^ \ d {4} \ s \ d {9} $'或使用[單詞邊界](http:// www 。regular-expressions.info/wordboundaries.html)如果數字可能出現在文本中的任何位置:'\ b \ d {4} \ s \ d {9} \ b' –

+0

呃,好吧,幾乎完美。現在它要求第一個數字應始終爲零「0」,第二個數字可以是任何但不是0(零)...所以「0521 1234567」或「040 23456」..... –

2

PHP代碼:

$regex = '~\d{4}\h\d{9}~'; 
$str = '0521 123456789'; 
preg_match($regex, $str, $match); 

看到一個demo on ideone.com
允許只有這種模式(即無其他字符),你可以它的開頭和結尾:

$regex = '~^\d{4}\h\d{9}$~'; 
+0

爲什麼downvote? – Jan

+0

我沒有downvote你的答案:O ....感謝您的幫助。我給了第二個回答一些評論。 –

+0

@DanielMcDonald如果Jan或我的回答回答了您的問題,請考慮將其標記爲已接受。謝謝! – Druzion

相關問題