2012-03-24 18 views
5

Ho bisogno di un'espressione regolare che funzioni in PHP e JavaScript per convalidare i numeri di telefono locali, mobili e freecall (0800) della Nuova Zelanda.Espressione regolare per convalidare i numeri di telefono Nuova Zelanda

Matches:  (09)1234567, (021)123456, (021)1234567, (027)123456, 0800 12345, 0800 1234578 
Non-Matches: (09)123456 , (021)12345 , (031)1234567, (027)12345 , 0800-1234, 080

Qui di seguito è un'espressione regolare che ho trovato sul web, ma non sembra funzionare per qualche motivo:

(^ ([0] \ d {1})) (\ d {7 } $) | (^ ([0] [2] \ d {1})) (\ d {6,8} $) | ([0] [8] [0] [0]) ([\ s]) (\ d {5,8} $)

Qualcuno può aiutare con l'espressione sopra? Grazie in anticipo per il tuo aiuto.

UPDATE - ho lavorato fuori e la soluzione è qui sotto:

$phone_number = preg_replace('/[^\d\(\)]/', '', $phone_number); 
$pattern = '/^(\((03|04|06|07|09)\)\d{7})|(\((021|022|025|027|028|029)\)\d{6,8})|((0508|0800|0900)\d{5,8})$/'; 

risposta

2

Perché tutte quelle parentesi e staffe?

^(\(0\d\)\d{7}|\(02\d\)\d{6,8}|0800\s\d{5,8})$ 

Non è necessario avvolgere tutto in coppia di parentesi per farlo funzionare. Questa è la programmazione voodoo. Ad esempio, ([0][8][0][0]) è semplicemente 0800.

+0

Questo sembra buono e l'ho provato in PHP, ma non ha funzionato per qualche motivo. Chiunque può aiutare? – Chris

+0

@Chris: Tutto quello che posso dire è che l'espressione stessa funziona (http://rubular.com/r/ynr28Fcwui). Dovresti esaminare i documenti PHP. – Tomalak

1

Non ci sono abbastanza informazioni sulla formattazione dei numeri di telefono NZ nella tua domanda per essere sicuri di questo, ma un trucco potrebbe essere quello di rimuovere prima tutti i caratteri non numerici e dopo quel test per il numero di cifre (per quanto mi riguarda può vedere dovrebbe essere 9 cifre?). Qualcosa di simile:

var phonenr = '(09)1234567'.replace(/[\(\)\s\-]/g,'') 
    ,valid = phonenr.length === 9; 
// or check if it's all digits, starting with 0 as well as the length 
valid = /^0\d+$/.test(phonenr) && phonenr.length === 9 
+0

formattazione dei numeri di telefono NZ è: mobile min: xxx xxx xxx max: xxx xxxx xxxx fisso: xx xxxx xxx O 0800 xxx xxx xxx xxx 0508 – Chris

Problemi correlati