2012-05-03 10 views
17

कृपया उचित RegEx मिलान में सहायता करें। 6 पूर्ण संख्याओं के किसी भी संयोजन के बाद कोई भी 2 अक्षर।RegEx पैटर्न किसी भी दो अक्षरों के बाद छह संख्या

These would be valid: 
RJ123456 
PY654321 
DD321234 

These would not 
DDD12345 
12DDD123 
+0

"एबीसी 1234567" के बारे में क्या; क्या यह कभी हो सकता है? – Phrogz

+0

दो से अधिक अक्षरों या 6 संख्याओं के लिए कोई मामला नहीं होगा। – Fergus

+3

क्या "पूरी संख्या" हमेशा पश्चिमी अरबी अंकों '0-9' होगी, या फिर कभी भी [अन्य अंक] होंगे (http://en.wikipedia.org/wiki/Numerical_digit#Numerals_in_most_popular_systems)? – Phrogz

उत्तर

55

[a-zA-Z]{2}\d{6}

[a-zA-Z]{2} का मतलब दो पत्र \d{6} का मतलब 6 अंक

आप केवल बड़े अक्षरों चाहते हैं, तो:

[A-Z]{2}\d{6}

+0

बहुत अच्छा काम करता है .... – Fergus

+0

आप^से शुरू करना भूल गए हैं, अन्यथा, यदि आपके पास 2 से अधिक अक्षर हैं, तो यह आंशिक रूप से मेल खाता है। –

16

आप कुछ इस तरह की कोशिश कर सकते:

[a-zA-Z]{2}[0-9]{6} 

यहाँ अभिव्यक्ति की नीचे एक ब्रेक है:

[a-zA-Z] # Match a single character present in the list below 
       # A character in the range between “a” and “z” 
       # A character in the range between “A” and “Z” 
    {2}   # Exactly 2 times 
[0-9]  # Match a single character in the range between “0” and “9” 
    {6}   # Exactly 6 times 

यह एक विषय में कहीं भी मेल खाएगी। आप विषय के आसपास सीमाओं की जरूरत है तो आप निम्न में से कोई कर सकता है:

^[a-zA-Z]{2}[0-9]{6}$ 

कौन सा सुनिश्चित करता है कि पूरे विषय से मेल खाता है। I. विषय के पहले या बाद में कुछ भी नहीं है।

या

\b[a-zA-Z]{2}[0-9]{6}\b 

जो यह सुनिश्चित करता है है विषय के प्रत्येक पक्ष पर एक word boundary

जैसा कि @Phrogz द्वारा इंगित किया गया है, आप [0-9] को \d के लिए अन्य उत्तरों के रूप में बदलकर अधिक terse बना सकते हैं।

[a-zA-Z]{2}\d{6} 
+0

@Phrogz हाहा, यह मुझे लगता है कि वरीयता का मामला है, मैं आमतौर पर '\ d' का उपयोग करता हूं, लेकिन मुझे नहीं पता कि आज मुझे थोड़ा अलग महसूस हुआ। मैं आपके लिए कुछ और प्रयास करूँगा और इसे अपडेट कर दूंगा। – Robbie

+0

+1 पूर्ण और pedantic होने के लिए;) – Phrogz

+0

यह वास्तव में मदद की। रेगेक्स दोनों ने काम किया .. धन्यवाद – Fergus

5

मैं क्या regexp है पर निर्भर करता है जिस भाषा का आप उपयोग करते हैं, लेकिन अनौपचारिक रूप से, यह होगा:

[:alpha:][:alpha:][:digit:][:digit:][:digit:][:digit:][:digit:][:digit:] 

जहां [:alpha:] = [a-zA-Z] और [:digit:] = [0-9]

आप एक regexp भाषा कि परिमित पुनरावृत्ति की अनुमति देता है का उपयोग करते हैं, कि लगेगा की तरह: सही सिंटैक्स

[:alpha:]{2}[:digit:]{6} 

आप कर रहे हैं विशेष रूप से भाषा पर निर्भर करता है उपयोग कर रहा है, लेकिन यह विचार है।

+0

[[: अल्फा:]] के बजाय [: अल्फा:] 2alpha और 6 अंक खोजने के लिए [[: अल्फा:]] {2} [[: अंक:]] {6} –

2

पर अपने रेगुलर एक्सप्रेशन से स्वाद यह समर्थन करता है तो निर्भर करता है, मैं उपयोग कर सकते हैं:

\b[A-Z]{2}\d{6}\b # Ensure there are "word boundaries" on either side, or 

(?<![A-Z])[A-Z]{2}\d{6}(?!\d) # Ensure there isn't a uppercase letter before 
           # and that there is not a digit after 
2

सब कुछ तुम यहाँ की जरूरत है this quickstart guide में पाया जा सकता। एक सीधा समाधान [A-Za-z][A-Za-z]\d\d\d\d\d\d या [A-Za-z]{2}\d{6} होगा।

यदि आप केवल पूंजी अक्षरों को स्वीकार करना चाहते हैं तो [A-Za-z][A-Z] के साथ प्रतिस्थापित करें।

संबंधित मुद्दे