Ich suche die ultimative Postleitzahl und Postleitzahl Regex. Ich suche etwas, das den größten Teil (hoffentlich den ganzen) der Welt abdeckt.
regex
zipcode
postal-code
Darryl Hein
quelle
quelle
Antworten:
There is none.
Postleitzahlen auf der ganzen Welt folgen keinem gemeinsamen Muster. In einigen Ländern bestehen sie aus Zahlen, in anderen können sie Kombinationen aus Zahlen und Buchstaben sein, einige können Leerzeichen enthalten, andere Punkte, die Anzahl der Zeichen kann zwischen zwei und mindestens sechs variieren ...
Was Sie (theoretisch) tun könnten, ist, für jedes Land der Welt einen eigenen regulären Ausdruck zu erstellen, der von der IMO nicht empfohlen wird. Aber Sie würden im Validierungsteil immer noch fehlen: Postleitzahl
12345
existiert möglicherweise, aber12346
nicht, vielleicht12344
auch nicht. Wie prüft man das mit einem Regex?Das kannst du nicht.
quelle
^\d{5}(?:[-\s]\d{4})?$
Die Unicode-CLDR enthält die Postleitzahl für jedes Land. (158 Regex insgesamt!)
core.zip
von http://unicode.org/Public/cldr/26.0.1/common/supplemental/postalCodeData.xml
den entpackten Inhalt an (direkter Inhalt: common / supplemental / postalCodeData.xml )Google hat auch einen Webdienst mit Informationen zur Formatierung von Adressen pro Land, einschließlich Postleitzahlen, hier - http://i18napis.appspot.com/address (Ich habe diesen Link über http://unicode.org/review/pri180/ gefunden )
Bearbeiten
Hier eine Kopie von postalCodeData.xml Regex:
quelle
benutze diese regx
quelle
Jedes Postleitzahlensystem verwendet nur AZ und / oder 0-9 und manchmal Leerzeichen / Bindestrich
Nicht jedes Land verwendet Postleitzahlen (z. B. Irland außerhalb von Dublin), aber das werden wir hier ignorieren.
Das kürzeste Postleitzahlenformat ist Sierra Leone mit
NN
Das längste ist Amerikanisch-Samoa mit
NNNNN-NNNNNN
Sie sollten ein Leerzeichen oder einen Bindestrich zulassen.
Sollte nicht mit Leerzeichen oder Bindestrich beginnen oder enden
Dies sollte Folgendes abdecken:
quelle
Der Versuch, die ganze Welt mit einem regulären Ausdruck abzudecken, ist nicht vollständig möglich und sicherlich nicht machbar oder empfehlenswert.
Nicht um mein eigenes Horn zu betätigen, aber ich habe einige ziemlich gründliche reguläre Ausdrücke geschrieben, die Sie vielleicht hilfreich finden.
Kanadische Postleitzahlen
US Postleitzahlen
Postleitzahlen in Großbritannien
Es ist nicht möglich, die Richtigkeit zu garantieren, ohne tatsächlich etwas an eine Adresse zu senden und die Person wissen zu lassen, wann sie es erhält, aber wir können die Dinge eingrenzen, indem wir Fälle beseitigen, von denen wir wissen, dass sie schlecht sind.
quelle
Dies scheint eine gute Referenz zu sein, obwohl es nicht in Regex ist.
Wirklich, es sei denn, Sie versenden tatsächlich etwas an Ihre Benutzer, ich denke nicht, dass es die Mühe wert ist. Und wenn Sie es versenden, gibt es Adressreinigungswerkzeuge / -dienste, die Sie prüfen können, um es sich leichter zu machen.
quelle
Wir verwenden Folgendes:
Kanada
Amerika
Andere
quelle
Abhängig von Ihrer Anwendung möchten Sie möglicherweise einen Regex-Abgleich für die Länder implementieren, aus denen die meisten Ihrer Besucher stammen, und für den Rest keine Validierung (akzeptieren Sie alles).
quelle
Big Jump hat Zeilenumbrüche, Leerzeichen und Steuerzeichen vergessen.
Internationale Postleitzahlen sind eine Art Halteproblem.
quelle
Bitte beachten Sie, dass dies ein ziemlich schwieriges Problem ist, wie aus der akzeptierten Antwort hervorgeht. Ich denke, es hat die Leute auf geonames.org nicht davon abgehalten . Sie haben eine Datei, eine Länderinfodatei , die nicht vollständig in diese Antwort passt - das Limit liegt anscheinend bei 30000 Zeichen. Es gibt reguläre Ausdrücke für ungefähr 150 Länder.
Ich habe die für diese Frage relevanten Bits hier extrahiert:
Hoffentlich habe ich keinen Fehler gemacht, mein Regex-Fu ist ziemlich schwach.
quelle
Wenn sich noch jemand für die Validierung von Postleitzahlen interessiert, habe ich eine Lösung gefunden:
Mit können
Google Geocoding API
wir die Gültigkeit der Postleitzahl überprüfen, die sowohl die Landesvorwahl als auch eine Postleitzahl selbst hat.Zum Beispiel lebe ich in der Ukraine, damit ich Folgendes überprüfen kann: https://maps.googleapis.com/maps/api/geocode/json?components=postal_code:80380|country:UA
Oder verwenden Sie die JS-API: https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering
Wo
80380
eine gültige Postleitzahl für die Ukraine ist, ist tatsächlich jede (#####) gültig.Google gibt den
ZERO_RESULTS
Status zurück, wenn nichts gefunden wurde. OderOK
und ein Ergebnis, wenn beide korrekt sind.Hoffe das wird hilfreich sein.
quelle
Wie andere betont haben, ist es unwahrscheinlich, dass ein regulärer Ausdruck sie alle regiert. Mit den Adressformatierungsinformationen der Universal Postal Union - einer wenig bekannten UN-Agentur - können Sie jedoch reguläre Ausdrücke für so viele Länder erstellen, wie Sie benötigen .
Hier sind beispielsweise die Regeln für die Adressformatierung, einschließlich der Postleitzahl, für eine Handvoll Länder (PDF-Format):
quelle
Das Problem wird sein, dass Sie wahrscheinlich keine guten Mittel haben, um mit den sich ändernden Postleitzahlenanforderungen von Ländern auf der anderen Seite der Welt Schritt zu halten, und dass Sie keine gemeinsamen Sprachen haben. Wenn Sie nicht über ein ausreichendes Budget verfügen, um dies nachzuverfolgen, ist es mit ziemlicher Sicherheit besser, die Verantwortung für die Validierung von Adressen an Google oder Yahoo zu übertragen.
Beide Unternehmen bieten Adressensuchfunktionen über eine programmierbare API.
quelle
Warum machst du das und warum kümmert es dich? Wie Tom Ritter betonte, spielt es keine Rolle, ob Sie überhaupt eine Postleitzahl haben, geschweige denn, ob diese gültig ist oder nicht, bis Sie tatsächlich etwas an diese Adresse senden. Auch wenn Sie erwarten , dass Sie ihnen etwas wird das Senden eines Tages , das bedeutet nicht , dass Sie eine Postleitzahl brauchen heute .
quelle
Wie an anderer Stelle erwähnt, sind die Unterschiede auf der ganzen Welt enorm. Und selbst wenn etwas, das dem Muster entspricht, nicht bedeutet, dass es existiert.
Dann gibt es natürlich viele Orte, an denen Postleitzahlen nicht verwendet werden (z. B. viel oder Irland).
quelle
Es gibt Gründe, die über den Versand hinausgehen und eine genaue Postleitzahl haben. Reisebüros, die grenzüberschreitende Touren durchführen (mit Ausnahme der Eurozone natürlich), benötigen diese Informationen im Voraus, um sie den Behörden zu übermitteln. Oft werden diese Informationen von einem Agenten eingegeben, der mit solchen Dingen vertraut ist oder nicht. JEDE Methode, die Fehler reduzieren kann, ist eine gute Idee ™
Es wäre jedoch verrückt, einen regulären Ausdruck zu schreiben, der alle Postleitzahlen der Welt abdeckt.
quelle
Angesichts der Tatsache, dass es für jedes Land so viele Randfälle gibt (z. B. verwenden Londoner Adressen möglicherweise ein etwas anderes Format als der Rest des Vereinigten Königreichs), glaube ich nicht, dass es einen anderen ultimativen regulären Ausdruck gibt als vielleicht:
Am besten mit einem ziemlich breiten Muster (auch nicht ganz so breit wie oben) oder mit jedem Land / jeder Region mit einem eigenen Muster!
UPDATE: Es kann jedoch möglich sein, einen regulären Ausdruck dynamisch zu erstellen, der auf vielen kleineren, regionenspezifischen Regeln basiert - obwohl die Leistung nicht sicher ist!
Viele länderspezifische Muster finden Sie auf der RegExLib- Site.
quelle
Jemand fragte nach der Liste der formatierenden Postanschriften, und ich denke, das ist es, wonach er gesucht hat ...
Franks zwanghafter Leitfaden für Postanschriften: http://www.columbia.edu/~fdc/postal/ Hilft jedoch nicht viel bei Problemen auf Straßenebene.
Meine Arbeit verwendet einige Tools, um dies zu unterstützen: - Lexis-Nexis-Dienste, einschließlich NCOA-Lookups (Sie erhalten die Adressstandardisierung kostenlos "kostenlos") - "Melissa Data" http://www.melissadata.com
quelle
Dies ist eine sehr einfache RegEx zur Überprüfung der US-Postleitzahl (nicht ZipCode Plus Four):
Scheint alle fünfstelligen numerischen gültig zipcodes außer sind
00000
,88888
und99999
.Ich habe diese RegEx mit http://regexpal.com/ getestet.
SP
quelle
Wenn
Zip Code
Zeichen und Ziffern (alphanumerisch) zulässig sind, wird unter dem regulären Ausdruck, wo er übereinstimmt, 5 oder 9 oder 10 alphanumerische Zeichen mit einem Bindestrich (-
) verwendet:quelle