Devo convalidare un codice postale canadese (ad esempio, M4B 1C7
) utilizzando le espressioni regolari C# (.NET).Convalida codice postale canadese
risposta
codici postali canadesi non possono contenere le lettere D, F, I, O, Q, o U, e non può iniziare con W o Z:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Se si desidera uno spazio opzionale in mezzo:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
suggerisco il seguente:
bool FoundMatch = false;
try {
FoundMatch = Regex.IsMatch(SubjectString, "\\A[ABCEGHJKLMNPRSTVXY]\\d[A-Z] ?\\d[A-Z]\\d\\z");
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
ho modificato la mia risposta per escludere le lettere non validi nel primo carattere, come da http://www.infinitegravity.ca/postalcodeformat.htm. – Templar
f se non vuoi fare due tagli per ogni barra, usa un valore letterale @ string come in '@" \ A [ABCEGHJKLMNPRSTVXY] \ d [A-Z]? \ D [A-Z] \ d \ z "'. – cdmckay
Qualcosa di simile a questo:
^[A-Z]\d[A-Z] \d[A-Z]\d$
Non tutte le lettere sono valide nei codici postali. – Tilendor
La convalida del formato di un codice postale senza convalidarne il significato non vale la pena, dal momento che gli errori di battitura possono ancora risultare in un codice postale valido per l'indirizzo errato. Vuoi convalidare il codice contro il database degli indirizzi. Vedere http://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf
il link del post in Canada è morto – billynoah
Ecco le regole http://en.wikipedia.org/wiki/Postal_code#Reserved_characters
ABCEGHJKLMNPRSTVXY <-- letter used
DFIOQU <-- letters not used because it mixes up the reader
WZ <-- letters used but not in the first letter
With that in mind the following in the proper regex
@[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][\s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Prova questo:
function postalCodeCheck (postalCode, type) {
if (!postalCode) {
return null;
}
postalCode = postalCode.toString().trim();
var us = new RegExp("^\\d{5}(-{0,1}\\d{4})?$");
// var ca = new RegExp(/^((?!.*[DFIOQU])[A-VXY][0-9][A-Z])|(?!.*[DFIOQU])[A-VXY][0-9][A-Z]\ ?[0-9][A-Z][0-9]$/i);
var ca = new RegExp(/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]()?\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i);
if(type == "us"){
if (us.test(postalCode.toString())) {
console.log(postalCode);
return postalCode;
}
}
if(type == "ca")
{
if (ca.test(postalCode.toString())) {
console.log(postalCode);
return postalCode;
}
}
return null;
}
class Program
{
static void Main(string[] args)
{
string c1;
string c2;
string c3;
string c4;
string c5;
string c6;
string c7;
int sortie;
bool parfais = true;
Console.WriteLine("entrer votre code postal");
string cp = Console.ReadLine();
if (cp.Length == 7)
{
c1 = cp.Substring(0, 1);
c2 = cp.Substring(1, 1);
c3 = cp.Substring(2, 1);
c4 = cp.Substring(3, 1);
c5 = cp.Substring(4, 1);
c6 = cp.Substring(5, 1);
c7 = cp.Substring(6, 1);
if (int.TryParse(c1, out sortie))
{
parfais = false;
Console.WriteLine("le 1er caratere doit etre une lettre");
}
if (int.TryParse(c2, out sortie) == false)
{
parfais = false;
Console.WriteLine("le 2e caratere doit etre un nombre");
}
if (int.TryParse(c3, out sortie))
{
parfais = false;
Console.WriteLine("le 3e caratere doit etre une lettre");
}
if (c4.Contains(" ") == false)
{
parfais = false;
Console.WriteLine("vous devez utiliser un espace");
}
if (int.TryParse(c5, out sortie) == false)
{
parfais = false;
Console.WriteLine("le 5e caratere doit etre un nombre");
}
if (int.TryParse(c6, out sortie))
{
parfais = false;
Console.WriteLine("le 6e caratere doit etre une lettre");
}
if (int.TryParse(c7, out sortie) == false)
{
parfais = false;
Console.WriteLine("le 7e caratere doit etre un nombre");
}
else if(parfais == true)
{
Console.WriteLine("code postal accepter");
Console.ReadLine();
}
}
else
{
Console.WriteLine("le code postal doit contenir 7 caratere incluant l'espace");
}
Console.ReadLine();
L'OP vuole usare le espressioni regolari. Non ce ne sono in questa risposta. –
- 1. javascript regex per codice postale canadese
- 2. Efficace espressione regolare per la funzione di codice postale canadese
- 3. C# - Validazione per codice postale statunitense o canadese
- 4. Espressione regolare per il codice postale/codice postale olandese
- 5. Codice postale dalla posizione
- 6. ottenere codice postale a 9 cifre dal codice postale a 5 cifre, programmatico, api
- 7. Convalidare il formato di codice postale statunitense con Rails
- 8. Plugin codice postale migliore per Ruby
- 9. Latitudine e longitudine basate sul codice postale
- 10. ottenere latitudine e longitudine utilizzando codice postale
- 11. Espressione regolare solo per l'Inghilterra Codice postale
- 12. Come estrarre il codice postale da Maps API
- 13. Integrazione iOS Stripe - Come aggiungere codice postale a PTKView
- 14. Ottieni nome città da codice postale google geocoding
- 15. Completamento automatico di Google Place per il codice postale
- 16. Convertire lat/lon nel codice postale/nome del quartiere
- 17. Analisi input utente - città/stato/codice postale/paese
- 18. Mappatura del codice postale degli Stati Uniti al fuso orario
- 19. MySQL: come applicare il codice postale sul pad con "0"?
- 20. Come cercare un codice postale da una coordinata GPS?
- 21. Prevenire la duplicazione postale
- 22. Guzzle problema parametro postale
- 23. limite dimensioni casella postale
- 24. Utilizza Faker gem per generare città correlata, codice postale, valori codice paese
- 25. come modellare un indirizzo postale
- 26. Analizzatore di indirizzo postale Java
- 27. Espressione regolare Javascript corrispondente a un codice postale a 5 o 9 cifre
- 28. Carica immagine tramite modulo postale
- 29. Ajax valore postale di ritorno
- 30. convalida modulo codice con numeri di telefono
+1 per "I codici postali canadesi non possono contenere determinate lettere". Potresti anche aggiungere che la lettera principale è più ristretta, quindi la seconda e la terza. –
grazie mille per la risposta ... questo funziona bene per codici come M4B1E8 ... ma non funzionerà per M4B 1E8. Canada postale potrebbe avere spazio dopo 3 caratteri ... riferimento qui: http: //www.mongabay.com/igapo/toronto_zip_codes.htm – Jimmy
Idealmente, dovresti ignorare gli spazi bianchi sull'input e normalizzare i dati in un formato canonico per l'archiviazione. In questo modo, le persone possono inserire i codici postali con o senza spazi e non importa. È possibile formattare per scopi di output, se necessario. – Rob