2010-10-30 28 views
6

Wie kann ich eine südafrikanische Handynummer validieren? Die Nummer muss mit der Ländervorwahl wie +27 beginnen und maximal 11 Ziffern lang sein - insgesamt 12 mit dem "+" Zeichen.Validieren Sie Südafrika Handynummer

+1

Vergessen Sie nicht, dass zukünftige Nummern länger sein können. –

Antwort

6

Versuchen Sie einen regulären Ausdruck wie:

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

zu PHP Übersetzt wäre das:

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

Bitte benutzen Sie dies nicht. Jede Website, die Telefonnummern schlecht überprüft, lässt mich sofort gehen. Erlaube Bindestriche und Leerzeichen, erzwinge nicht das +. –

+0

@Coronatus: Die Nummer muss unter folgenden Bedingungen gültig sein: 'Die Nummer muss mit der Ländervorwahl wie +27 beginnen und maximal 11 Ziffern lang sein - insgesamt 12 mit dem "+" Zeichen. Wenn Sie Leerzeichen und Bindestriche zulassen, wird die Zahl länger als 12 Zeichen. – Harmen

+0

@Coronatus - Ich sehe das Problem nicht darin, Ihre Benutzer zu zwingen, eine gültige Telefonnummer einzugeben - genau wie ein gültiger Benutzername oder eine E-Mail. Die Kontrolle der Benutzereingaben ist eine ziemlich gute Übung, wenn Sie Ihre Anwendung schützen möchten. – Repox

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

Wenn Sie zuerst alle Nicht-Nummern entfernen, ist eine 'Telefonnummer' wie '27abc554def23565' ebenfalls gültig ... – Harmen

1

Nehmen Sie die Eingabe alles und Streifen aus, die nicht eine Zahl ist.

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

Die verbleibenden Ziffern zählen.

Wenn es 9 Ziffern lang ist, prepend „+27“

Wenn er 11 Ziffern lang prepend ist ein „+“

Wenn er 10 Ziffern lang ist oder weniger als 9 ist, dann ist es wahrscheinlich kein gültiges Telefonnummernformat?