ज़िप कोड के लिए regex


118

संभावित डुप्लिकेट:
अंतिम पोस्टल कोड और ज़िप रीजेक्स क्या है?

मुझे Regex की आवश्यकता है जो ज़िप-कोड के लिए मेरे सभी तीन कंडोमों को संतुष्ट कर सकता है। Eg-

  1. 12345
  2. 12345-6789
  3. 12345 1234

किसी भी संकेत और सुझाव बहुत सराहना की जाएगी। धन्यवाद !


4
डुप्लिकेट क्लोजर स्केचिंग दिखता है - डुप्ले एक रेगेक्स के लिए पूछ रहा है जो किसी भी राष्ट्र के किसी भी पोस्टल कोड से कभी भी मेल खाएगा, जबकि यह प्रश्न ज़िप कोड से मेल खाने के लिए एक रेगीक्स के लिए पूछ रहा है, जो कि यूएस-ओनली एक चीज है, जो इस प्रश्न को बहुत पसंद करता है शिकार से दायरे में संकरा - लेकिन वहाँ है एक जवाब शिकार में पाया जा करने के लिए वास्तव में। देखें stackoverflow.com/a/7185241/1709587 जिसके लिए अमेरिका सहित 100 देशों,> यूनिकोड CLDR के (पुराने अब पदावनत है, लेकिन शायद अभी भी कई मामलों में पर्याप्त) डाक कोड regexes सूचीबद्ध करता है। अमेरिका regex है \d{5}([ \-]\d{4})?
मार्क अमेरी

जवाबों:


311
^\d{5}(?:[-\s]\d{4})?$
  • ^ = स्ट्रिंग की शुरुआत।
  • \d{5} = मैच 5 अंक (शर्त 1, 2, 3 के लिए)
  • (?:…) = समूहन
  • [-\s] = एक स्थान से मिलान करें (शर्त 3 ​​के लिए) या एक हाइफ़न (शर्त 2 के लिए)
  • \d{4} = मैच 4 अंक (शर्त 2, 3 के लिए)
  • …? = इसके पहले पैटर्न वैकल्पिक है (शर्त 1 के लिए)
  • $ = तार का अंत।

7
\sटैब और नई लाइनों सहित किसी भी व्हाट्सएप से मेल खाएगा।
पलकहीनता

1
हाय क्या स्थिति के बिना 123451234 स्थिति के बारे में
अजय सुवालका

4
@ProVega: आपके द्वारा लिंक किए गए (अब हटाए गए) उत्तरों को पढ़ना, यह गलत प्रतीत होता है। उदाहरण के लिए, 00544एक मान्य ज़िप कोड है; 544नहीं है।
कीथ थॉम्पसन

2
@AjaySuwalka: 123451234 के लिए समायोजित करने के लिए आपको कोई जगह नहीं देनी होगी? [- \ s] के बाद, इसलिए यह बन जाएगा: ^ \ d {5} (?: [- \ s]? \ d {4})! $
Grungondola

6
पार्टी में थोड़ी देर, और शायद गेंद पर सबसे सुंदर घंटी नहीं है, लेकिन मैंने हाइफ़न के दोनों ओर अतिरिक्त वैकल्पिक स्थान जोड़े हैं - ज्यादातर सौंदर्यशास्त्र के लिए। /(^\d{5}(?:[\s]?[-\s][\s]?\d{4})?$)/
बिरेल

4

केवल सूचीबद्ध तीन स्थितियों के लिए, ये अभिव्यक्तियाँ भी काम कर सकती हैं:

^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$

कृपया अतिरिक्त विवरण के लिए यह डेमो देखें।

यदि हमारे पास 5 और 4 अंकों या एक निरंतर 9 अंकों के ज़िप कोड के बीच अनपेक्षित अतिरिक्त स्थान होते, जैसे:

123451234
12345 1234
12345  1234

उदाहरण के लिए यह अभिव्यक्ति कम बाधाओं के साथ एक माध्यमिक विकल्प होगा:

^\d{5}([-]|\s*)?(\d{4})?$

कृपया अतिरिक्त विवरण के लिए यह डेमो देखें।

RegEx सर्किट

jex.im नियमित अभिव्यक्ति की कल्पना करता है:

यहां छवि विवरण दर्ज करें

परीक्षा

const regex = /^\d{5}[-\s]?(?:\d{4})?$/gm;
const str = `12345
12345-6789
12345 1234
123451234
12345 1234
12345  1234
1234512341
123451`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}


0

मुझे पता है कि यह उन लोगों के लिए स्पष्ट हो सकता है जो RegEx का अक्सर उपयोग करते हैं, लेकिन यदि कोई भी पाठक RegEx में नया है, तो मैंने सोचा कि मुझे एक अवलोकन करना चाहिए जो मैंने बनाया था जो कि मेरी एक परियोजना के लिए सहायक था।

@Kennytm से पिछले उत्तर में:

^\d{5}(?:[-\s]\d{4})?$

...? = इसके पहले पैटर्न वैकल्पिक है (शर्त 1 के लिए)

यदि आप मानक 5 अंक और +4 ज़िप कोड दोनों की अनुमति देना चाहते हैं, तो यह एक बेहतरीन उदाहरण है।

अमेरिका के 'ज़िप + 4' प्रारूप में केवल ज़िप कोड का मिलान करने के लिए जैसा कि मुझे करने की आवश्यकता थी (केवल 2 और 3 स्थितियां), बस अंतिम को हटा दें ?ताकि यह हमेशा अंतिम 5 वर्ण समूह से मेल खाए।

RegEx के साथ छेड़छाड़ के लिए मेरे द्वारा सुझाए गए एक उपयोगी उपकरण नीचे दिए गए हैं:

https://regexr.com/

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

अगर मुझे कुछ गलत लगा या जानकारी का एक महत्वपूर्ण हिस्सा छूट गया, तो कृपया मुझे सुधारें।


या आप इस regex ट्यूटोरियल का उल्लेख कर सकते हैं - youtube.com/watch?v=8uCHRyK_VMo
कृष्णराज राणा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.