अंतिम डाक कोड और ज़िप regex क्या है?


200

मैं परम पोस्टल कोड और ज़िप कोड regex की तलाश कर रहा हूं। मैं ऐसी चीज की तलाश कर रहा हूं, जो दुनिया के सबसे (उम्मीद के मुताबिक) को कवर करे।


4
सभी डाक कोड के लिए एक एकल रेगेक्स अधिकांश मामलों के लिए बेकार होगा, जिसमें बहुत सारे यूनिकोड एन्कोडिंग की आवश्यकता नहीं होगी। बहुत बेहतर है कि देश-दर-देश आधार पर रेगेक्स की जांच करें ताकि आप "न्यूयॉर्क, एनवाई एएफ 23 क्यू" जैसी चीजों को सही न मानें।
हाँ - वह जेक।

101
आपको कोई समस्या है। आप इसके लिए एक रेगेक्स लिखते हैं। अब आपको दो समस्याएँ हैं।
रॉबर्ट एस।

regexlib.com/Search.aspx?k=decimal&c=3&m=-1&ps=100 किसी क्षेत्र को यहाँ पर मान्य करने के लिए
दिनेश कुमार

2
वह जो भविष्य के सभी संभावित मूल्यों को संभालता है।
जॉड्रेल

जवाबों:


126

वहां कोई नहीं है।

दुनिया भर में पोस्टल / ज़िप कोड एक सामान्य पैटर्न का पालन नहीं करते हैं। कुछ देशों में वे संख्याओं से बने होते हैं, दूसरों में वे संख्याओं के अक्षरों के संयोजन हो सकते हैं, कुछ में रिक्त स्थान हो सकते हैं, अन्य बिंदु, वर्णों की संख्या दो से कम से कम छह तक भिन्न हो सकती है ...

आप क्या कर सकते हैं (सैद्धांतिक रूप से) दुनिया के हर देश के लिए एक अलग रीजेक्स बनाया जा सकता है, न कि अनुशंसित आईएमओ। लेकिन आप अभी भी सत्यापन भाग पर गायब होंगे: ज़िप कोड 12345मौजूद हो सकता है, लेकिन 12346नहीं, शायद 12344मौजूद नहीं है। आप एक रेगेक्स के साथ कैसे जांच करते हैं?

आप नहीं कर सकते।


मुझे संदेह है कि एक रेगीक्स को संकलित किया जा सकता है, लेकिन यह कि इस तरह का कार्य एक डेटाबेस के लिए बहुत बेहतर है। रेगेक्स कुछ ऐसा दिखेगा जैसे १०००० | १०००१ | १०००२ | १०००३ | .......
किबी

किसी क्षेत्र को मान्य करने के लिए यहां जाएं regexlib.com/Search.aspx?k=decimal&c=3&m=-1&ps=100
दिनेश कुमार

आप पहले अपने देश से मेल खाने वाले regexp का उपयोग कर सकते हैं ( en.wikipedia.org/wiki/List_of_postal_codes देखें ) और geonames.org/export/ws-overview.html
SimonSimCity

3
मेरे दो सेंट: ब्राजील में यह वास्तविक संख्या 8 है, 5 इसके बाद एक पानी का छींटा है और 3 अधिक
जॉर्ज कैंपोस

^\d{5}(?:[-\s]\d{4})?$
आमिर अफरीदी

260

यूनिकोड CLDR में प्रत्येक देश के लिए पोस्टल कोड regex होता है। (158 रेगेक्स की कुल!)

Google के पास डाक कोड सहित प्रति-देश पता फ़ॉर्मेटिंग जानकारी के साथ एक वेब सेवा भी है, यहाँ - http://i18napis.appspot.com/address (मैंने पाया कि लिंक के माध्यम से http://unicode.org/review/pri180/ के )

संपादित करें

यहाँ postCCodeData.xml regex की एक प्रति :

"GB", "GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}"
"JE", "JE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}"
"GG", "GY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}"
"IM", "IM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}"
"US", "\d{5}([ \-]\d{4})?"
"CA", "[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ ]?\d[ABCEGHJ-NPRSTV-Z]\d"
"DE", "\d{5}"
"JP", "\d{3}-\d{4}"
"FR", "\d{2}[ ]?\d{3}"
"AU", "\d{4}"
"IT", "\d{5}"
"CH", "\d{4}"
"AT", "\d{4}"
"ES", "\d{5}"
"NL", "\d{4}[ ]?[A-Z]{2}"
"BE", "\d{4}"
"DK", "\d{4}"
"SE", "\d{3}[ ]?\d{2}"
"NO", "\d{4}"
"BR", "\d{5}[\-]?\d{3}"
"PT", "\d{4}([\-]\d{3})?"
"FI", "\d{5}"
"AX", "22\d{3}"
"KR", "\d{3}[\-]\d{3}"
"CN", "\d{6}"
"TW", "\d{3}(\d{2})?"
"SG", "\d{6}"
"DZ", "\d{5}"
"AD", "AD\d{3}"
"AR", "([A-HJ-NP-Z])?\d{4}([A-Z]{3})?"
"AM", "(37)?\d{4}"
"AZ", "\d{4}"
"BH", "((1[0-2]|[2-9])\d{2})?"
"BD", "\d{4}"
"BB", "(BB\d{5})?"
"BY", "\d{6}"
"BM", "[A-Z]{2}[ ]?[A-Z0-9]{2}"
"BA", "\d{5}"
"IO", "BBND 1ZZ"
"BN", "[A-Z]{2}[ ]?\d{4}"
"BG", "\d{4}"
"KH", "\d{5}"
"CV", "\d{4}"
"CL", "\d{7}"
"CR", "\d{4,5}|\d{3}-\d{4}"
"HR", "\d{5}"
"CY", "\d{4}"
"CZ", "\d{3}[ ]?\d{2}"
"DO", "\d{5}"
"EC", "([A-Z]\d{4}[A-Z]|(?:[A-Z]{2})?\d{6})?"
"EG", "\d{5}"
"EE", "\d{5}"
"FO", "\d{3}"
"GE", "\d{4}"
"GR", "\d{3}[ ]?\d{2}"
"GL", "39\d{2}"
"GT", "\d{5}"
"HT", "\d{4}"
"HN", "(?:\d{5})?"
"HU", "\d{4}"
"IS", "\d{3}"
"IN", "\d{6}"
"ID", "\d{5}"
"IL", "\d{5}"
"JO", "\d{5}"
"KZ", "\d{6}"
"KE", "\d{5}"
"KW", "\d{5}"
"LA", "\d{5}"
"LV", "\d{4}"
"LB", "(\d{4}([ ]?\d{4})?)?"
"LI", "(948[5-9])|(949[0-7])"
"LT", "\d{5}"
"LU", "\d{4}"
"MK", "\d{4}"
"MY", "\d{5}"
"MV", "\d{5}"
"MT", "[A-Z]{3}[ ]?\d{2,4}"
"MU", "(\d{3}[A-Z]{2}\d{3})?"
"MX", "\d{5}"
"MD", "\d{4}"
"MC", "980\d{2}"
"MA", "\d{5}"
"NP", "\d{5}"
"NZ", "\d{4}"
"NI", "((\d{4}-)?\d{3}-\d{3}(-\d{1})?)?"
"NG", "(\d{6})?"
"OM", "(PC )?\d{3}"
"PK", "\d{5}"
"PY", "\d{4}"
"PH", "\d{4}"
"PL", "\d{2}-\d{3}"
"PR", "00[679]\d{2}([ \-]\d{4})?"
"RO", "\d{6}"
"RU", "\d{6}"
"SM", "4789\d"
"SA", "\d{5}"
"SN", "\d{5}"
"SK", "\d{3}[ ]?\d{2}"
"SI", "\d{4}"
"ZA", "\d{4}"
"LK", "\d{5}"
"TJ", "\d{6}"
"TH", "\d{5}"
"TN", "\d{4}"
"TR", "\d{5}"
"TM", "\d{6}"
"UA", "\d{5}"
"UY", "\d{5}"
"UZ", "\d{6}"
"VA", "00120"
"VE", "\d{4}"
"ZM", "\d{5}"
"AS", "96799"
"CC", "6799"
"CK", "\d{4}"
"RS", "\d{6}"
"ME", "8\d{4}"
"CS", "\d{5}"
"YU", "\d{5}"
"CX", "6798"
"ET", "\d{4}"
"FK", "FIQQ 1ZZ"
"NF", "2899"
"FM", "(9694[1-4])([ \-]\d{4})?"
"GF", "9[78]3\d{2}"
"GN", "\d{3}"
"GP", "9[78][01]\d{2}"
"GS", "SIQQ 1ZZ"
"GU", "969[123]\d([ \-]\d{4})?"
"GW", "\d{4}"
"HM", "\d{4}"
"IQ", "\d{5}"
"KG", "\d{6}"
"LR", "\d{4}"
"LS", "\d{3}"
"MG", "\d{3}"
"MH", "969[67]\d([ \-]\d{4})?"
"MN", "\d{6}"
"MP", "9695[012]([ \-]\d{4})?"
"MQ", "9[78]2\d{2}"
"NC", "988\d{2}"
"NE", "\d{4}"
"VI", "008(([0-4]\d)|(5[01]))([ \-]\d{4})?"
"PF", "987\d{2}"
"PG", "\d{3}"
"PM", "9[78]5\d{2}"
"PN", "PCRN 1ZZ"
"PW", "96940"
"RE", "9[78]4\d{2}"
"SH", "(ASCN|STHL) 1ZZ"
"SJ", "\d{4}"
"SO", "\d{5}"
"SZ", "[HLMS]\d{3}"
"TC", "TKCA 1ZZ"
"WF", "986\d{2}"
"XK", "\d{5}"
"YT", "976\d{2}"

3
एयू पोस्टकोड-रेगेक्स के एक त्वरित स्कैन के साथ ... यह रेगेक्स बहुत सरल है और बहुत सारे झूठे-सकारात्मक के माध्यम से अनुमति देगा, इसलिए यह संपूर्ण नहीं है।
टैरिन ईस्ट

7
यूनिकोड सीएलडीआर का नवीनतम संस्करण पोस्टल कोड रेगेक्स युक्त संस्करण 26.0.1 है। बाद के संस्करणों में इसे हटा दिया गया है क्योंकि डेटा को बनाए नहीं रखा गया था और कोई अन्य विश्वसनीय स्रोत नहीं मिले।
KIKO सॉफ्टवेयर

1
समान, फ्रेंच ज़िप कोड regex के लिए बहुत ही बुनियादी। इस एक का उपयोग करें "^ ((0 [1-9]]) | ([1-8] [0-9]) | ((9 [[8]]) (2A) | ((2B)) [0-9 | {3} $ "-> developpez.net/forums/d518232/webmasters-developpement-web/…
विन्सेन्ट डी।

अब मैं i18napis.appspot.com/address/data/GB का उपयोग कर रहा हूं ; क्या इस सेवा में कोई समस्या है?
मैजोल जूल

1
@ Kiko-software की टिप्पणी में छोटा सुधार: डाक कोड डेटा वाला नवीनतम संस्करण 27.0.3 है
9

89

इन regx का उपयोग करें

$ZIPREG=array(
    "US"=>"^\d{5}([\-]?\d{4})?$",
    "UK"=>"^(GIR|[A-Z]\d[A-Z\d]??|[A-Z]{2}\d[A-Z\d]??)[ ]??(\d[A-Z]{2})$",
    "DE"=>"\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b",
    "CA"=>"^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ])\ {0,1}(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$",
    "FR"=>"^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$",
    "IT"=>"^(V-|I-)?[0-9]{5}$",
    "AU"=>"^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$",
    "NL"=>"^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$",
    "ES"=>"^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$",
    "DK"=>"^([D|d][K|k]( |-))?[1-9]{1}[0-9]{3}$",
    "SE"=>"^(s-|S-){0,1}[0-9]{3}\s?[0-9]{2}$",
    "BE"=>"^[1-9]{1}[0-9]{3}$",
    "IN"=>"^\d{6}$"
);

7
बेहतर प्रयासों में से एक मैंने वास्तव में ओपी को जवाब देने के लिए देखा है। जैसे-जैसे आप विज्ञापन करें, लेकिन एक साफ और स्पष्ट दृष्टिकोण प्राप्त करें।
रोब

3
जब आप रोब को जोड़ते हैं, तो यह धीमा नहीं होता है क्योंकि आप देश कोड से रीगेक्स में से एक का चयन करेंगे।
थॉमसचैफ

2
मैं तुम्हें 2012 में यह पोस्ट देखा। के बाद से कोई और मिल गया?
rybo111

@ rybo111 चेक ची जवाब।
Giulio Caccin

5
@ ddunn801, पैटर्न को मान्य करने और पोस्टल कोड को प्रमाणित करने के बीच एक (जिसका बड़ा) अंतर है। कोड्स को प्रमाणित करना पूरे परिमाण के अधिक कठिन हैं क्योंकि (कम से कम अमेरिका में) पोस्टल कोड नियमित रूप से जोड़े और गिराए जाते हैं। एक आदर्श दुनिया में, आप पूरे मेलिंग पते (इस तरह की सेवाओं का भुगतान किया जाता है) को मान्य करने के लिए एक सेवा (जैसे, USPS) को सबमिट करने से पहले पैटर्न को मान्य करने के लिए एक त्वरित जांच करेंगे, आप खराब डेटा के साथ मूल्य को बर्बाद करने से नफरत करेंगे। )। काश, दुनिया आदर्श से बहुत दूर होती।
जेबीएच

48
  1. प्रत्येक डाक कोड प्रणाली केवल AZ और / या 0-9 और कभी-कभी अंतरिक्ष / डैश का उपयोग करती है

  2. प्रत्येक देश डाक कोड (पूर्व आयरलैंड डबलिन के बाहर) का उपयोग नहीं करता है, लेकिन हम यहां पर ध्यान नहीं देंगे।

  3. सबसे छोटा डाक कोड प्रारूप सिएरा लियोन है NN

  4. सबसे लंबा अमेरिकी समोआ है NNNNN-NNNNNN

  5. आपको एक स्थान या डैश की अनुमति देनी चाहिए।

  6. अंतरिक्ष या डैश के साथ शुरू या समाप्त नहीं होना चाहिए

यह ऊपर कवर किया जाना चाहिए:

(?i)^[a-z0-9][a-z0-9\- ]{0,10}[a-z0-9]$

8
यह एक ही उत्तर प्रतीत होता है जो प्रत्येक संभावित संयोजन के पूर्ण सत्यापन के बजाय एक पवित्रता जांच (जो संभवतः ओपी चाहता था) प्रदान करता है। वास्तव में मैं क्या चाहता था thx
ल्यूकस

1
@GiulioCaccin H0H0H0 एक वैध कनाडाई डाक कोड है (जो बच्चे सांता क्लॉज़ होने के बहाने कनाडा पोस्ट से पत्र प्राप्त करने के लिए उपयोग करते हैं), लेकिन इसका मतलब यह नहीं है कि यह एक वैध ग्राहक डाक कोड है :)
नील मैकगैगन

2
FYI करें, अमेरिकन समोआ केवल एक पोस्टकोड के लिए काफी छोटा है और यह 96799 है
naterkane

5
मेरी राय में यह एकमात्र अच्छा जवाब है। उदाहरण के लिए इसे HTML पैटर्न विशेषता में पूर्व-सत्यापन के रूप में उपयोग किया जा सकता है।
ब्लैकबम

1
मुझे लगता है कि यह उस स्थिति के लिए एक अच्छा जवाब है जहां कोई सिर्फ एक पवित्रता की जांच करना चाहता है और प्रति देश प्राथमिक रूप से मान्य नहीं है। बस बहुत प्रयास के बिना थोड़ा क्लीनर डेटा होना चाहिए - ऐसे मामलों में जहां पूर्ण सुरक्षा की आवश्यकता होती है, तीसरे पक्ष के प्लगइन / सेवा की आवश्यकता हो सकती है जैसा कि दूसरों ने बताया है।
यो लुडके

17

पूरी दुनिया को एक नियमित अभिव्यक्ति के साथ कवर करने की कोशिश पूरी तरह से संभव नहीं है, और निश्चित रूप से संभव या अनुशंसित नहीं है।

अपने स्वयं के सींग को टटोलने के लिए नहीं, लेकिन मैंने कुछ पूरी तरह से नियमित अभिव्यक्तियाँ लिखी हैं, जो आपको मददगार लग सकती हैं।

  • कनाडाई डाक कोड

    Basic validation:
    ^[ABCEGHJ-NPRSTVXY]{1}[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[ ]?[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[0-9]{1}$
    
    Extended validation:
    ^(A(0[ABCEGHJ-NPR]|1[ABCEGHK-NSV-Y]|2[ABHNV]|5[A]|8[A])|B(0[CEHJ-NPRSTVW]|1[ABCEGHJ-NPRSTV-Y]|2[ABCEGHJNRSTV-Z]|3[ABEGHJ-NPRSTVZ]|4[ABCEGHNPRV]|5[A]|6[L]|9[A])|C(0[AB]|1[ABCEN])|E(1[ABCEGHJNVWX]|2[AEGHJ-NPRSV]|3[ABCELNVYZ]|4[ABCEGHJ-NPRSTV-Z]|5[ABCEGHJ-NPRSTV]|6[ABCEGHJKL]|7[ABCEGHJ-NP]|8[ABCEGJ-NPRST]|9[ABCEGH])|G(0[ACEGHJ-NPRSTV-Z]|1[ABCEGHJ-NPRSTV-Y]|2[ABCEGJ-N]|3[ABCEGHJ-NZ]|4[ARSTVWXZ]|5[ABCHJLMNRTVXYZ]|6[ABCEGHJKLPRSTVWXZ]|7[ABGHJKNPSTXYZ]|8[ABCEGHJ-NPTVWYZ]|9[ABCHNPRTX])|H(0[HM]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NPRSTV-Z]|4[ABCEGHJ-NPRSTV-Z]|5[AB]|7[ABCEGHJ-NPRSTV-Y]|8[NPRSTYZ]|9[ABCEGHJKPRSWX])|J(0[ABCEGHJ-NPRSTV-Z]|1[ACEGHJ-NRSTXZ]|2[ABCEGHJ-NRSTWXY]|3[ABEGHLMNPRTVXYZ]|4[BGHJ-NPRSTV-Z]|5[ABCJ-MRTV-Z]|6[AEJKNRSTVWYXZ]|7[ABCEGHJ-NPRTV-Z]|8[ABCEGHLMNPRTVXYZ]|9[ABEHJLNTVXYZ])|K(0[ABCEGHJ-M]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-MPRSTVW]|4[ABCKMPR]|6[AHJKTV]|7[ACGHK-NPRSV]|8[ABHNPRV]|9[AHJKLV])|L(0[[ABCEGHJ-NPRS]]|1[ABCEGHJ-NPRSTV-Z]|2[AEGHJMNPRSTVW]|3[BCKMPRSTVXYZ]|4[ABCEGHJ-NPRSTV-Z]|5[ABCEGHJ-NPRSTVW]|6[ABCEGHJ-MPRSTV-Z]|7[ABCEGJ-NPRST]|8[EGHJ-NPRSTVW]|9[ABCGHK-NPRSTVWYZ])|M(1[BCEGHJ-NPRSTVWX]|2[HJ-NPR]|3[ABCHJ-N]|4[ABCEGHJ-NPRSTV-Y]|5[ABCEGHJ-NPRSTVWX]|6[ABCEGHJ-NPRS]|7[AY]|8[V-Z]|9[ABCLMNPRVW])|N(0[ABCEGHJ-NPR]|1[ACEGHKLMPRST]|2[ABCEGHJ-NPRTVZ]|3[ABCEHLPRSTVWY]|4[BGKLNSTVWXZ]|5[ACHLPRV-Z]|6[ABCEGHJ-NP]|7[AGLMSTVWX]|8[AHMNPRSTV-Y]|9[ABCEGHJKVY])|P(0[ABCEGHJ-NPRSTV-Y]|1[ABCHLP]|2[ABN]|3[ABCEGLNPY]|4[NPR]|5[AEN]|6[ABC]|7[ABCEGJKL]|8[NT]|9[AN])|R(0[ABCEGHJ-M]|1[ABN]|2[CEGHJ-NPRV-Y]|3[ABCEGHJ-NPRSTV-Y]|4[AHJKL]|5[AGH]|6[MW]|7[ABCN]|8[AN]|9[A])|S(0[ACEGHJ-NP]|2[V]|3[N]|4[AHLNPRSTV-Z]|6[HJKVWX]|7[HJ-NPRSTVW]|9[AHVX])|T(0[ABCEGHJ-MPV]|1[ABCGHJ-MPRSV-Y]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NPRZ]|4[ABCEGHJLNPRSTVX]|5[ABCEGHJ-NPRSTV-Z]|6[ABCEGHJ-NPRSTVWX]|7[AENPSVXYZ]|8[ABCEGHLNRSVWX]|9[ACEGHJKMNSVWX])|V(0[ABCEGHJ-NPRSTVWX]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NRSTV-Y]|4[ABCEGK-NPRSTVWXZ]|5[ABCEGHJ-NPRSTV-Z]|6[ABCEGHJ-NPRSTV-Z]|7[ABCEGHJ-NPRSTV-Y]|8[ABCGJ-NPRSTV-Z]|9[ABCEGHJ-NPRSTV-Z])|X(0[ABCGX]|1[A])|Y(0[AB]|1[A]))[ ]?[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[0-9]{1}$
  • यूएस ज़िप कोड

    ^[0-9]{5}(-[0-9]{4})?$
  • यूके पोस्ट कोड

    ^([A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\ [0-9][ABD-HJLNP-UW-Z]{2}|(GIR\ 0AA)|(SAN\ TA1)|(BFPO\ (C\/O\ )?[0-9]{1,4})|((ASCN|BBND|[BFS]IQQ|PCRN|STHL|TDCU|TKCA)\ 1ZZ))$

वास्तव में किसी पते पर किसी को मेल किए बिना सटीकता की गारंटी देना संभव नहीं है और प्राप्त होने पर व्यक्ति आपको बताएंगे, लेकिन हम उन मामलों को समाप्त करके संकीर्ण कर सकते हैं जिन्हें हम जानते हैं कि वे खराब हैं।


कनाडाई पोस्टल कोड के लिए विस्तारित संस्करण में कुछ गलत या गायब हो सकता है, क्योंकि यह कहता है कि निम्नलिखित डाक कोड अमान्य है: E3G 0A1, हालांकि यह एक वैध है।
22

मैंने कनाडा में सभी 845,495 डाक कोड के खिलाफ सत्यापन किया है और इस regex स्ट्रिंग में इन सभी डाक कोड का समर्थन करने के लिए विस्तारित सत्यापन पर कुछ सुधार हैं। यहाँ कनाडाई डाक कोड पर विस्तारित मान्यता के लिए नया रेगेक्स स्ट्रिंग है: pastebin.com/vazqFKy4
fsschmitt

14

यह एक अच्छे संदर्भ की तरह दिखता है, हालांकि यह रेगेक्स में नहीं है।

वास्तव में, जब तक आप वास्तव में अपने उपयोगकर्ताओं के लिए कुछ शिपिंग नहीं कर रहे हैं , मुझे नहीं लगता कि यह प्रयास के लायक है। और यदि आप इसे शिपिंग कर रहे हैं , तो आप अपने आप को आसान बनाने के लिए एड्रेस क्लीनिंग टूल / सर्विसेज देख सकते हैं।


इसके अलावा, भले ही यह आज सही ज़िप कोड है, लेकिन यह भविष्य में बहुत अच्छी तरह से बदल सकता है। यूएसपीएस लगातार नए और विभाजन क्षेत्रों को जोड़ रहा है। जिस तरह से आप रख सकते हैं वह केवल उस समय को मान्य करना है जब आप वास्तव में कुछ शिपिंग कर रहे हैं। कुछ शहर कई कारणों से अपने स्वयं के ज़िप कोड को बदलने का भी चुनाव करते हैं।
21

ऐसा लगता है कि किसी ने आपके द्वारा पोस्ट किए गए विकि लेख को लिया और इसे JSON को प्रत्येक देश के लिए पोस्टल / ज़िप कोड regex के साथ आउटपुट किया - gist.github.com/matthewbednarski/…
क्रिस स्मिथ

8

हम निम्नलिखित का उपयोग करते हैं:

कनाडा

([A-Z]{1}[0-9]{1}){3}   //We raise to upper first

अमेरिका

[0-9]{5}                //-or-
[0-9]{5}-[0-9]{4}       //10 digit zip

अन्य

जैसा है वैसा स्वीकार करो


1
मैं सुझाव देता हूं कि यूएस में एक वैकल्पिक - [0-9] {4} जोड़ें। कुछ लोग अपने ज़िप + 4 का उपयोग करते हैं।
डेविड थॉर्नले

4
/ [0-9] {5} (?: - [0-9] {4})? / आपको एक ही समय में यूएस से दोनों शैलियों को मान्य करने देता है।
चास। ओवंस

2
@ Chas.Owens जोड़ने ^ और $ सुनिश्चित करें कि वे "12345aaa" ... / ^ [0-9] {5} (?: - [0-9] {4}] पहले या बाद में कुछ और टाइप नहीं कर सकते हैं? ? $ /
टिम फ्रैंकलिन

7

आपके आवेदन के आधार पर, आप उन देशों के लिए रेगेक्स मिलान लागू करना चाह सकते हैं जहां आपके अधिकांश आगंतुक उत्पन्न होते हैं और बाकी के लिए कोई मान्यता नहीं है (कुछ भी स्वीकार करें)।


6
.* 

बिग जंप लाइन ब्रेक, ब्लैंक और कंट्रोल किरदारों के बारे में भूल गए।

अंतर्राष्ट्रीय डाक कोड एक तरह की रुकने की समस्या है।


6

कृपया ध्यान दें कि यह एक कठिन समस्या है, जैसा कि स्वीकृत उत्तर द्वारा बताया गया है। मुझे लगता है कि यह geonames.org पर लोगों को रोक नहीं पाया, हालांकि। उनके पास एक देश जानकारी फ़ाइल है , जो इस उत्तर में पूरी तरह से फिट नहीं है - सीमा 30000 वर्णों पर जाहिरा तौर पर है। लगभग 150 देशों के लिए rexxes हैं।

मैंने इस प्रश्न के लिए संबंधित बिट्स को यहाँ निकाला:

AD ^(?:AD)*(\d{3})$
AM ^(\d{6})$
AR ^([A-Z]\d{4}[A-Z]{3})$
AT ^(\d{4})$
AU ^(\d{4})$
AX ^(?:FI)*(\d{5})$
AZ ^(?:AZ)*(\d{4})$
BA ^(\d{5})$
BB ^(?:BB)*(\d{5})$
BD ^(\d{4})$
BE ^(\d{4})$
BG ^(\d{4})$
BH ^(\d{3}\d?)$
BM ^([A-Z]{2}\d{2})$
BN ^([A-Z]{2}\d{4})$
BR ^(\d{8})$
BY ^(\d{6})$
CA ^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$
CH ^(\d{4})$
CL ^(\d{7})$
CN ^(\d{6})$
CR ^(\d{4})$
CU ^(?:CP)*(\d{5})$
CV ^(\d{4})$
CX ^(\d{4})$
CY ^(\d{4})$
CZ ^(\d{5})$
DE ^(\d{5})$
DK ^(\d{4})$
DO ^(\d{5})$
DZ ^(\d{5})$
EC ^([a-zA-Z]\d{4}[a-zA-Z])$
EE ^(\d{5})$
EG ^(\d{5})$
ES ^(\d{5})$
ET ^(\d{4})$
FI ^(?:FI)*(\d{5})$
FM ^(\d{5})$
FO ^(?:FO)*(\d{3})$
FR ^(\d{5})$
GB ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$
GE ^(\d{4})$
GF ^((97|98)3\d{2})$
GG ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$
GL ^(\d{4})$
GP ^((97|98)\d{3})$
GR ^(\d{5})$
GT ^(\d{5})$
GU ^(969\d{2})$
GW ^(\d{4})$
HN ^([A-Z]{2}\d{4})$
HR ^(?:HR)*(\d{5})$
HT ^(?:HT)*(\d{4})$
HU ^(\d{4})$
ID ^(\d{5})$
IL ^(\d{5})$
IM ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$
IN ^(\d{6})$
IQ ^(\d{5})$
IR ^(\d{10})$
IS ^(\d{3})$
IT ^(\d{5})$
JE ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$
JO ^(\d{5})$
JP ^(\d{7})$
KE ^(\d{5})$
KG ^(\d{6})$
KH ^(\d{5})$
KP ^(\d{6})$
KR ^(?:SEOUL)*(\d{6})$
KW ^(\d{5})$
KZ ^(\d{6})$
LA ^(\d{5})$
LB ^(\d{4}(\d{4})?)$
LI ^(\d{4})$
LK ^(\d{5})$
LR ^(\d{4})$
LS ^(\d{3})$
LT ^(?:LT)*(\d{5})$
LU ^(\d{4})$
LV ^(?:LV)*(\d{4})$
MA ^(\d{5})$
MC ^(\d{5})$
MD ^(?:MD)*(\d{4})$
ME ^(\d{5})$
MG ^(\d{3})$
MK ^(\d{4})$
MM ^(\d{5})$
MN ^(\d{6})$
MQ ^(\d{5})$
MT ^([A-Z]{3}\d{2}\d?)$
MV ^(\d{5})$
MX ^(\d{5})$
MY ^(\d{5})$
MZ ^(\d{4})$
NC ^(\d{5})$
NE ^(\d{4})$
NF ^(\d{4})$
NG ^(\d{6})$
NI ^(\d{7})$
NL ^(\d{4}[A-Z]{2})$
NO ^(\d{4})$
NP ^(\d{5})$
NZ ^(\d{4})$
OM ^(\d{3})$
PF ^((97|98)7\d{2})$
PG ^(\d{3})$
PH ^(\d{4})$
PK ^(\d{5})$
PL ^(\d{5})$
PM ^(97500)$
PR ^(\d{9})$
PT ^(\d{7})$
PW ^(96940)$
PY ^(\d{4})$
RE ^((97|98)(4|7|8)\d{2})$
RO ^(\d{6})$
RS ^(\d{6})$
RU ^(\d{6})$
SA ^(\d{5})$
SD ^(\d{5})$
SE ^(?:SE)*(\d{5})$
SG ^(\d{6})$
SH ^(STHL1ZZ)$
SI ^(?:SI)*(\d{4})$
SK ^(\d{5})$
SM ^(4789\d)$
SN ^(\d{5})$
SO ^([A-Z]{2}\d{5})$
SV ^(?:CP)*(\d{4})$
SZ ^([A-Z]\d{3})$
TC ^(TKCA 1ZZ)$
TH ^(\d{5})$
TJ ^(\d{6})$
TM ^(\d{6})$
TN ^(\d{4})$
TR ^(\d{5})$
TW ^(\d{5})$
UA ^(\d{5})$
US ^\d{5}(-\d{4})?$
UY ^(\d{5})$
UZ ^(\d{6})$
VA ^(\d{5})$
VE ^(\d{4})$
VI ^\d{5}(-\d{4})?$
VN ^(\d{6})$
WF ^(986\d{2})$
YT ^(\d{5})$
ZA ^(\d{4})$
ZM ^(\d{5})$
CS ^(\d{5})$

उम्मीद है कि मैंने कोई गलती नहीं की, मेरा रेगेक्स-फू काफी कमजोर है।


1
मैं यह बताना चाहता हूं कि फ्रांस और ग्रेट ब्रिटेन के लिए रेगेक्स संभावित स्थानों को ध्यान में नहीं रखते हैं; फ्रांस में, डाक कोड दूसरे और तीसरे अंक (यानी 75001 के बजाय 75 001) के बीच की जगह के साथ इनपुट किया जा सकता है। ब्रिटिश पोस्ट कोड अक्सर एक स्पेस (यानी SW11AA के बजाय SW1 1AA) के साथ लिखे जाते हैं।
साल्वेशन

@salcoin इनपुट के लिए धन्यवाद, मैंने इस पर ध्यान नहीं दिया (भले ही मैं फ्रांसीसी हूं)। ऐसा लगता है कि इस संबंध में ची का जवाब बेहतर है।
nha

क्योंकि str_replace कोई स्पेस नहीं है, जो सुपर टैक्सिंग सही है? : पी
रॉबर्ट पाउंडर

6

अगर किसी को अभी भी इस बात में दिलचस्पी है कि ज़िप कोड को कैसे मान्य किया जाए, तो मुझे इसका हल मिल गया है:

Google Geocoding APIहम का उपयोग करके ज़िप कोड की वैधता की जाँच कर सकते हैं दोनों देश कोड और एक ज़िप कोड ही।

उदाहरण के लिए मैं यूक्रेन में रहता हूँ इसलिए मैं इस तरह की जाँच कर सकता हूँ: https://maps.googleapis.com/maps/api/geocode/json?compenders=postal_code:80380pgcountry:UA

या JS API का उपयोग कर रहे हैं: https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFtertering

80380यूक्रेन के लिए वैध ज़िप कहां है, वास्तव में हर (#####) वैध है।

ZERO_RESULTSअगर कुछ नहीं मिला तो गूगल स्टेटस लौटाता है। या OKऔर अगर दोनों सही हैं तो एक परिणाम।

आशा है कि यह मददगार होगा।


केवल समस्या प्रश्नों की संख्या पर सीमा होगी, जो साइट / आकार पर निर्भर करता है, एक मुद्दा हो सकता है।
डैरिल हेन

@DarrylHein निश्चित रूप से, लेकिन अब यह काम करने के लिए काफी बड़ी कीमत है =)
रोमियो

4

जैसा कि दूसरों ने बताया है, उन सभी पर शासन करने के लिए एक रेगेक्स संभव नहीं है। हालांकि, आप कई देशों के लिए नियमित रूप से अभिव्यक्त कर सकते हैं, क्योंकि आपको यूनिवर्सल पोस्टल यूनियन की एड्रेस फॉर्मेटिंग जानकारी का उपयोग करने की आवश्यकता है - संयुक्त राष्ट्र की एक छोटी एजेंसी।

उदाहरण के लिए, यहां कुछ मुट्ठी भर देशों (पीडीएफ प्रारूप) के लिए डाक कोड सहित पते के प्रारूपण नियम हैं:


2

समस्या यह है कि आपके पास दुनिया के दूसरी ओर देशों की बदलती डाक कोड आवश्यकताओं के साथ रखने का कोई अच्छा साधन नहीं है और जिसे आप कोई आम भाषा नहीं साझा करते हैं। जब तक आपके पास इसे ट्रैक करने के लिए पर्याप्त बजट नहीं है, तब तक आप निश्चित रूप से Google या याहू को पतों को मान्य करने की जिम्मेदारी देने से बेहतर हैं।

दोनों कंपनियां एक प्रोग्रामेबल एपीआई के माध्यम से एड्रेस लुकअप फेसिलिट्यूड प्रदान करती हैं।


1

आप ऐसा क्यों कर रहे हैं और आप क्यों परवाह करते हैं? जैसा कि टॉम रिटर ने बताया है, इससे कोई फर्क नहीं पड़ता कि आपके पास भी ज़िप / पोस्टल कोड है या नहीं, यह बहुत कम है कि क्या यह मान्य है या नहीं, जब तक और जब तक आप वास्तव में उस पते पर कुछ भेजने वाले नहीं हैं। यहां तक ​​कि अगर आप उम्मीद करते हैं कि आप उन्हें किसी दिन भेज देंगे , इसका मतलब यह नहीं है कि आपको आज डाक कोड की आवश्यकता है


हाँ, लेकिन अगर वे एक में प्रवेश करने जा रहे हैं, तो यह सुनिश्चित कर सकते हैं कि यह उस बिंदु पर सही है। हालांकि, मैं उन अन्य उत्तरों में से एक से सहमत हूं जो मूल रूप से कहते हैं, इसे उन देशों के लिए मान्य करें जो आपको लगता है कि आपके अधिकांश ग्राहक होंगे।
cdmckay

1
जब तक जिप सही नहीं होगी कुछ क्रेडिट क्लियरिंग हाउस बिल को स्वीकार नहीं करेंगे। मैं इनपुट पर जिप को मान्य करूंगा, बजाय चार्ज जमा करने के और इसे अस्वीकार कर दिया है।
सैम्यूडी

1

जैसा कि कहा गया है कि दुनिया भर में भिन्नता बहुत बड़ी है। और यहां तक ​​कि अगर कुछ जो पैटर्न से मेल खाता है, तो इसका मतलब यह नहीं है कि यह मौजूद है।

फिर, ज़ाहिर है, ऐसे कई स्थान हैं जहां पोस्टकोड का उपयोग नहीं किया जाता है (उदाहरण के लिए बहुत या आयरलैंड)।


वास्तव में, शायद आयरलैंड के सभी, जैसा कि मुझे नहीं लगता कि डी 1, डी 2, आदि को उचित पोस्ट कोड माना जाता है क्योंकि आप इस कोड और सड़क नंबर का उपयोग करके एक पते की पहचान नहीं कर सकते हैं।
डोनल

1

एक सटीक पोस्टल कोड होने के लिए शिपिंग से परे कारण हैं। यात्रा करने वाली ट्रैवल एजेंसियां ​​जो सीमा पार करती हैं (यूरोज़ोन को छोड़कर) निश्चित रूप से अधिकारियों को देने के लिए समय से पहले इस जानकारी की आवश्यकता होती है। अक्सर यह जानकारी एक एजेंट द्वारा दर्ज की जाती है जो ऐसी चीजों से परिचित हो सकती है या नहीं भी। गलतियों पर कटौती करने वाली कोई भी विधि एक अच्छा विचार है। ™

हालांकि, एक रेक्सक्स लिखना जो दुनिया में सभी डाक कोड को कवर करेगा, पागल होगा।


1
यह केवल एक अच्छा विचार है जब तक कि कोड मान्य ज़िपकोड को अस्वीकार नहीं करता है क्योंकि यह छोटी गाड़ी है या ज़िपकोड बदल गए हैं। मान्यता एक ऐसी चीज है जो या तो सही होनी चाहिए या बिल्कुल नहीं होनी चाहिए। बहुत कम से कम एक ओवरराइड विकल्प होना चाहिए।
चास। ओवेन्स

1

यह देखते हुए कि प्रत्येक देश के लिए बहुत सारे किनारे मामले हैं (उदाहरण के लिए। लंदन के पते ब्रिटेन के बाकी हिस्सों के लिए थोड़ा अलग प्रारूप का उपयोग कर सकते हैं) मुझे नहीं लगता कि शायद इसके अलावा कोई अंतिम रेक्स है:

[0-9a-zA-Z]+

एक काफी व्यापक पैटर्न के साथ जाने का सबसे अच्छा (अच्छी तरह से ऊपर के रूप में व्यापक नहीं), या अपने स्वयं के विशिष्ट पैटर्न के साथ प्रत्येक देश / क्षेत्र का इलाज!

अद्यतन: हालांकि, यह गतिशील रूप से कई छोटे, क्षेत्र विशिष्ट नियमों के आधार पर एक regex का निर्माण करने के लिए संभव हो सकता है - हालांकि प्रदर्शन के बारे में सुनिश्चित नहीं है!

RegExLib साइट पर बहुत सारे देश विशिष्ट पैटर्न देखे जा सकते हैं ।


1

मेलिंग पतों को फॉर्मेट करने की सूची के बारे में कोई पूछ रहा था, और मुझे लगता है कि यह वही है जो वह खोज रहा था ...

फ्रैंक अड्रेस टू पोस्टल अड्रेस: http://www.columbia.edu/~fdc/postal/ सड़क स्तर के मुद्दों के साथ ज्यादा मदद नहीं करता है, हालांकि।

मेरा काम इस के साथ सहायता करने के लिए कुछ उपकरणों का उपयोग करता है: - एनसीओए लुक्स सहित लेक्सिस-नेक्सिस सेवाएं (आपको "मुफ्त" के लिए पता मानकीकरण मिलेगा) - "मेलिसा डेटा" http://www.melissadata.com


1

यूएस ज़िपकोड (ज़िपकोड प्लस चार नहीं) को मान्य करने के लिए यह एक बहुत ही सरल RegEx है:

(?!([089])\1{4})\d{5}

लगता है कि सभी पाँच अंकों के संख्यात्मक को छोड़कर 00000, 88888और 99999;

मैंने http://regexpal.com/ के साथ इस RegEx का परीक्षण किया है

सपा


यह RegEx ज़िप + 4 भाग के लिए चार अंकों को लागू नहीं करता है। उदाहरण के लिए, यह "92122-1" को एक वैध ज़िप कोड मानता है।
सेंसी जेम्स

0

यदि Zip Codeवर्ण और अंक (अल्फ़ान्यूमेरिक) की अनुमति देता है, तो रेगेक्स के नीचे इस्तेमाल किया जाएगा जहाँ यह एक हाइपेन ( -) के साथ 5 या 9 या 10 अल्फ़ान्यूमेरिक वर्णों से मेल खाता है :

^([0-9A-Za-z]{5}|[0-9A-Za-z]{9}|(([0-9a-zA-Z]{5}-){1}[0-9a-zA-Z]{4}))$
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.