2013-07-27 7 views
12

के लिए नियमित अभिव्यक्ति मैं डच ज़िपकोड को सत्यापित करने के लिए जावास्क्रिप्ट में एक नियमित अभिव्यक्ति बनाने की कोशिश कर रहा हूं।डच ज़िप/डाक कोड

ज़िपकोड 4 नंबर, तब जब एक वैकल्पिक अंतरिक्ष और फिर 2 (केस असंवेदी) पत्र

वैध मान शामिल करना चाहिए:

1001aa 
1001Aa 
1001 AA 

मैं अब इस किया है, लेकिन यह काम नहीं करता:

var rege = /^([0-9]{4}[ ]+[a-zA-Z]{2})$/; 
+1

आप अंतरिक्ष के चारों ओर ब्रेकेट का उपयोग कर रहे हैं, आप उन वर्णों की एक श्रृंखला को परिभाषित करने के लिए उपयोग करते हैं उदा। '[0-6]' 0 तक 6 है। बस इसे '?' के साथ प्रतिस्थापित करें (एक स्थान और इसे वैकल्पिक बनाने के लिए एक प्रश्नचिह्न – Martijn

+4

एक तरफ के रूप में: डच डाक कोड शून्य से शुरू नहीं होते हैं। – Arjan

+3

न ही पोस्टकोड समाप्त हो रहे हैं एसएस, एसए या एसडी – Bart

उत्तर

39

डच डाक कोड के लिए कोई अग्रणी 0 आवश्यकता को संभालने और एसएस, एसए और एसडी के लिए मैच को खत्म करने के लिए संपादित नहीं किया गया। यह सब आपके लिए यह सब करना चाहिए।

अंतिम regex:

var rege = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i; 

फिडल इकाई परीक्षण: http://jsfiddle.net/hgU3u/

यहाँ एक टूटने है:

  1. ^ मैचों स्ट्रिंग की शुरुआत
  2. [1-9][0-9]{3} एक भी गैर शून्य अंक से मेल खाता है, और तीन 0-9 अंक
  3. ? मैचों 0 या 1 रिक्त स्थान (आप * इस्तेमाल कर सकते हैं 0 या अधिक रिक्त स्थान मैच के लिए)
  4. (?!sa|sd|ss) जाँच करने के लिए है कि शेष "सा", "एसडी", या "एस एस" नहीं है एक अग्रदर्शी परीक्षण है।
  5. [a-z]{2} मैचों 2 a-z पात्रों
  6. $ स्ट्रिंग
  7. i अंत में के अंत से मेल खाता है यहाँ मेरी हल है केस-संवेदी संशोधक
+0

हां, यह भी एक सही समाधान है। रेगेक्स में ए + पिछले एक वर्ण रेगेक्स (या कोष्ठक में एक पैटर्न) का एक या अधिक "हिट" है। –

5

है। अंत में मैं यह केस-संवेदी बनाता है:

var rege = /^\d{4} ?[a-z]{2}$/i; 
1

मामले आप मुसीबत बूटस्ट्रैप सत्यापन के लिए पैटर्न के रूप में इस का उपयोग कर में मैं आप के लिए इसे बदल सुझाव देते हैं:

^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$ 

यह जिस तरह से अभी भी मामला है बूटस्ट्रैप सत्यापनकर्ता द्वारा संवेदनशील और स्वीकार्य।