2009-09-04 4 views
5

मैं यह देखने की कोशिश कर रहा हूं कि एक अमेरिकी पता को सत्यापित करने का एक अच्छा तरीका क्या होगा, मुझे पता है कि ऐसा करने का कोई उचित तरीका नहीं हो सकता है, लेकिन मैं मूल तरीके से जा रहा हूं: #, सड़क का नाम, शहर, राज्य, और ज़िप कोड।PHP regexp यूएस पता

किसी भी विचार की सराहना की जाएगी। धन्यवाद

+0

क्या आप रेगेक्स के साथ सत्यापन करने का प्रयास कर रहे हैं? पूरी बात, ज़िप कोड? –

+0

जैसा कि मैंने पहले कहा था, मैं यह देखने की कोशिश कर रहा हूं कि स्ट्रिंग किसी संख्या (किसी भी आकार) से शुरू होती है, उसके बाद अक्षर (सड़क का नाम) और (शहर), और दो अक्षर राज्य कोड होते हैं। –

+0

आपके द्वारा अभी उल्लेख किए गए समस्या के साथ समस्या यह है कि पते को किसी संख्या (यानी एक माइक्रोसॉफ्ट वे, पीओ बॉक्स) से शुरू करने की आवश्यकता नहीं है और सड़क के नाम में पत्र (राजमार्ग, क्रमांकित सड़कों) नहीं हैं। – jimyi

उत्तर

2

नियमित अभिव्यक्तियों का उपयोग करके ऐसा करने में सक्षम होने के लिए पते में बहुत अधिक भिन्नताएं हैं। आप एक वेब सेवा खोजने से बेहतर हैं जो पते को मान्य कर सकता है। USPS has one - आपको इसका उपयोग करने के लिए अनुमति का अनुरोध करना होगा।

+0

दरअसल, यह भिन्नता नहीं है, लेकिन तथ्य यह है कि एक मेलिंग पता नियमित नहीं है। कम से कम, मुझे नहीं लगता कि यह है। अगर कोई यह साबित कर सकता है कि यह है, तो कृपया ऐसा करें - मुझे रूचि होगी। –

4

कोशिश न करें। किसी के पास पोस्ट ऑफिस बॉक्स, या एक अपार्टमेंट नंबर इत्यादि होने की संभावना है, और वे वास्तव में आपके साथ परेशान होंगे। यहां तक ​​कि एक "सामान्य" सड़क के नाम में न्यूयॉर्क शहर में 125 वीं स्ट्रीट (और कई अन्य) जैसी संख्याएं हो सकती हैं। यहां तक ​​कि एक उपनगर में कुछ क्रमांकित सड़कों हो सकती हैं।

और शहर के नामों में रिक्त स्थान हो सकते हैं।

+0

मैं "ईस्ट साउथ बोल्डर रोड" नामक एक सड़क पर रहता था। यही है, सड़क के पूर्वी भाग "दक्षिण बोल्डर रोड" नाम दिया गया है। मेरे पते के लिए पूछने वाले लोगों को यह बताने में बहुत मज़ा आया। –

+4

ऑस्ट्रेलिया में एक * शहर * 1770 कहा जाता है। और आपको अगले प्रश्न का उत्तर देने के लिए, नहीं, पोस्टकोड 4677 है। –

+0

http://en.wikipedia.org/wiki/1770,_Queensland –

4

उपयोगकर्ता को अलग-अलग फ़ील्ड (सड़क का नाम, शहर, राज्य, और ज़िप कोड) में पते के हिस्सों में प्रवेश करने के लिए कहें और इस तरह के क्षेत्र के लिए जो भी सत्यापन उचित है उसका उपयोग करें। यह सामान्य अभ्यास है।

वैकल्पिक रूप से, आप regex कि तीन अल्पविराम के द्वारा अलग चार तार के लिए मेल खाता है का सबसे सरल चाहते हैं, तो इस कोशिश:

/^(.+),([^,]+),([^,]+),([^,]+)$/ 

अगर चीजें मैच, आप पते के घटकों की जांच करने के मिलान अतिरिक्त पैटर्न का उपयोग कर सकते हैं। सड़क पता वैधता की जांच करने का कोई भी संभावित तरीका नहीं है लेकिन आप डाक कोड और राज्य कोड लिखने में सक्षम हो सकते हैं।

0

यह बुलेटप्रूफ समाधान नहीं है लेकिन धारणा यह है कि एक पता सड़क संख्या के लिए संख्यात्मक के साथ शुरू होता है और एक ज़िप कोड के साथ समाप्त होता है जो या तो 5 या 9 संख्या हो सकता है।

([0-9] {1,} [\ s \ एस] * [0-9] {5} (: -?? [0-9] {4}))

की तरह मैंने कहा, यह बुलेटप्रूफ नहीं है, लेकिन मैंने इसे अतीत में मामूली सफलता के साथ उपयोग किया है।

0

यहाँ न्यूजीलैंड में के साथ, आप New Zealand Post से डाक के पते की आधिकारिक सूची लाइसेंस सकते हैं - आप डेटा एक तालिका पॉप्युलेट करने के लिए की जरूरत साथ न्यूजीलैंड में हर मान्य डाक पता दे रही है।

इस सूची के खिलाफ का सत्यापन करना Regex साथ आने के लिए कोशिश कर रहा से एक पूरी बहुत आसान है - और सटीकता बहुत ज्यादा उच्च के रूप में अच्छी तरह से है, जैसा कि आप तीन मामलों के साथ अंत:

  • पता आप मान्य हैं सूची में है, इसलिए आप जानते हैं कि यह एक वास्तविक पता है
  • जो पता आप मान्य कर रहे हैं वह सूची में से एक जैसा ही है, इसलिए आपको पता है कि यह शायद एक वास्तविक पता है
  • पता आप 'प्रमाणीकरण सूची में समान नहीं है, इसलिए यह वास्तविक हो सकता है या नहीं भी हो सकता है।
सबसे अच्छा आप एक रेगुलर एक्सप्रेशन से साथ मिल जाएगा

  • पते के मेल खाने पर मान्य रहे regex है, इसलिए यह वास्तविक पता
  • पता आप मान्य कर रहे हैं नहीं है हो सकता है रेगेक्स से मेल करें, इसलिए यह वास्तविक पता नहीं हो सकता है

डाक पते जानने की आवश्यकता कई व्यवसायों के लिए एक बहुत ही आम स्थिति है, इसलिए मेरा मानना ​​है कि अधिकांश क्षेत्रों में एक सूची लाइसेंस करना संभव होगा।

एकमात्र चिपचिपा बिट मूल्य निर्धारण होगा।

http://semaphorecorp.com/cgi/zp4.html

स्टैंडर्ड प्रारूप में ऐसे ही

-1

उपयोग CASS सॉफ्टवेयर usps.com के रूप में प्रकाशन 28 में दर्ज है

आप अंतिम शिकार पता लगाने के लिए मान्य कर रहे हैं, http://semaphorecorp.com/mpdd/mpdd.html

2

पढ़ मैं सलमान के साथ सहमत : क्या उपयोगकर्ता अलग-अलग क्षेत्रों में डेटा दर्ज करता है (एक ज़िप के लिए, एक राज्य के लिए, एक शहर के लिए, और #/सड़क के नाम के लिए। प्रत्येक फ़ील्ड के लिए एक अलग रेगेक्स का उपयोग करें। सड़क #/सबसे अच्छी अभिव्यक्ति का नाम मैं आया

के साथ
/^[0-9]{1,7} [a-zA-z0-9]{2,35}\a*/ 
+0

क्या रेगेक्स यौगिक नामों के साथ या एसटी/डीआर/AVE के साथ काम करेगा? मैं "1234 ओल्ड स्टेट्सविले आरडी" या "123 मुख्य एसटी" के बारे में सोच रहा हूं। सड़क का नाम भाग रिक्त स्थान नहीं लेता है। – rajah9