2010-10-30 55 views
6

我如何驗證南非手機號碼? 該號碼必須以國家代碼開頭,例如+27,最長11位數字 - 共有12個帶「+」號。Validate南非手機電話號碼

+1

不要忘記未來的數字可能會更長。 – 2010-10-30 09:14:00

回答

6

嘗試一個正則表達式,如:

^\+27[0-9]{9}$ 

轉換爲PHP,這將是:

if(preg_match("/^\+27[0-9]{9}$/", $phoneNumber)){ 
    echo "Valid number"; 
} else { 
    echo "Invalid number"; 
} 
+1

請不要使用它。每個驗證電話號碼的網站都會讓我立即離開。允許連字符和空格,不要強制+。 – 2010-10-30 09:20:01

+0

@Coronatus:必須在這些條件下驗證號碼:'號碼必須以國家代碼開頭,例如+27,最長11位數字 - 共有12個「+」符號。允許空格和連字符會使數字超過12個字符。 – Harmen 2010-10-30 09:45:50

+0

@Coronatus - 在強制用戶輸入有效的電話號碼時,我看不到問題 - 就像有效的用戶名或電子郵件一樣。當你不想保護你的應用程序時,控制用戶輸入是一個相當好的做法。 – Repox 2010-10-30 09:47:24

0
$number = preg_replace('/[^0-9]/', '', $number); 
if ((substr($number, 0, 2) != '27') || strlen($number) != 11) 
{ 
    return false; 
} 
// else valid 
+0

如果你先去掉所有非數字,那麼'27abc554def23565'這樣的'電話號碼'也是有效的...... – Harmen 2010-10-30 09:17:50

1

採取輸入並去掉一切這不是一個號碼。

// rm all but Numbers 
$input = 'abC#'; 
$output = preg_replace('#[^0-9]#', '', $input); 
echo($output); 

計算剩餘的數字。

如果它是9位數字長,在前面加上「27」

如果是11位長添加前置「+」

如果是10位長或小於9,則推測其是不是有效的電話號碼格式?

相關問題