var regex = /[A-Za-z]\d[A-Za-z] ?\d[A-Za-z]\d/;
var match = regex.exec(value);
if (match){
if ((value.indexOf("-") !== -1 || value.indexOf(" ") !== -1) && value.length() == 7) {
return true;
} else if ((value.indexOf("-") == -1 || value.indexOf(" ") == -1) && value.length() == 6) {
return true;
}
} else {
return false;
}
La regex cerca il modello A0A 1B1. vere prove:Efficace espressione regolare per la funzione di codice postale canadese
A0A 1B1
A0A1B1
A0A1B1
A0A1B1C < < problema bambino
così ho aggiunto un assegno per "-" o "" e poi un controlla la lunghezza.
Esiste una regex o un metodo più efficiente?
Salto per dire che potrebbe anche usare il flag 'i' in modo che i controlli espliciti maiuscole/minuscole non siano necessari. – Dave
+1 regex molto accurato. – jurgenreza
Ciò consentirà codici postali canadesi non validi. I codici postali non iniziano mai con caratteri che potrebbero essere scambiati per numeri: I, O, Q, U, W, Z ... Quindi:/^ [ABCEGHJKLMNPRSTVXY] \ d [-]? \ D [A-Za-z] \ d $ /; –