2012-03-09 15 views
18

में 2 अक्षर और 2 संख्याएं मैं एक स्ट्रिंग को सत्यापित करने के लिए एक नियमित अभिव्यक्ति विकसित करने की कोशिश कर रहा हूं जो मेरे पास आता है: "TE33" या "FR56" या 2 अक्षरों और 2 संख्याओं का सम्मान करने वाला कोई अनुक्रम।नियमित अभिव्यक्ति - सी #

पहले 2 वर्ण वर्णमाला होना चाहिए और 2 अंतिम कारक संख्याएं होनी चाहिए।

मैंने कई संयोजनों की कोशिश की और मुझे सफलता नहीं मिली। आखिरी बार मैंने कोशिश की:

if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){ 
} 
+0

मैं हमेशा एक regex परीक्षण वेबसाइट पर इन सुलझा तो में जाने बनाम कुछ जो मुझे पता है इंटरैक्टिव परीक्षण से काम करता है। –

+5

एक अच्छी परीक्षण वेबसाइट इनके साथ आपकी सहायता करेगी, जैसे कि http://regexhero.net/tester/ –

+0

मेरे लिए ठीक काम करता है। आपके आने वाले तार वास्तव में क्या दिखते हैं? क्या आप स्ट्रिंग के हिस्से से मिलान करने की कोशिश कर रहे हैं या वे 4 अक्षर पूरे स्ट्रिंग हैं? –

उत्तर

31

आप एक अंतिम एंकर खो रहे हैं।

if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}\z")) { 
    // ... 
}

Here's a demo.


संपादित करें:

if(Regex.IsMatch(myString, @"^[A-Za-z]{2}.*\d{2}\z")) { 
    // ... 
}

Here's a demo.

+0

इससे कोई फर्क नहीं पड़ता है जब तक कि आपको वास्तव में किसी भी तार को अस्वीकार करने की आवश्यकता न हो जो अपेक्षा से अधिक लंबी हो। –

+0

यह अंत में एंकर के साथ भी मेल खाता है, कुछ और मामला हो सकता है। http://ideone.com/wZk6B –

+0

यह $ – ebutusov

4

इस के लिए आप मिलना चाहिए: यदि आप एक प्रारंभिक 2 पत्र और एक अंतिम 2 संख्याओं के बीच कुछ भी कर सकते हैं दो अक्षरों से शुरू होता है और दो संख्याओं के साथ समाप्त होता है।

[A-Za-z]{2}(.*)[0-9]{2} 

तुम्हें पता है यह हमेशा सिर्फ दो हो जाएगा और दो आप

[A-Za-z]{2}[0-9]{2} 
4

बस मस्ती के लिए, यहाँ एक गैर regex (अधिक पठनीय/मेरे जैसे भोले के लिए पोषणीय) समाधान है कर सकते हैं:

string myString = "AB12"; 

if(Char.IsLetter(myString, 0) && 
    Char.IsLetter(myString, 1) && 
    Char.IsNumber(myString, 2) && 
    Char.IsNumber(myString, 3)) { 
    // First two are letters, second two are numbers 
} 
else { 
    // Validation failed 
} 

संपादित

ऐसा लगता है कि मैं आवश्यकताओं को गलत समझा है। नीचे दिए गए कोड को सुनिश्चित करेगा कि पहले दो अक्षर और एक स्ट्रिंग मान्य के अंतिम दो वर्ण (इतने लंबे समय स्ट्रिंग की लंबाई के रूप में> 3)

string myString = "AB12"; 

if(myString.Length > 3) {  
    if(Char.IsLetter(myString, 0) && 
     Char.IsLetter(myString, 1) && 
     Char.IsNumber(myString, (myString.Length - 2)) && 
     Char.IsNumber(myString, (myString.Length - 1))) { 
     // First two are letters, second two are numbers 
     } 
     else { 
     // Validation failed 
    } 
} 
else { 
    // Validation failed 
} 
+0

ध्यान दें कि IsLetter ** बहुत अधिक ** ए-जेड से अधिक है। आप अंकों के लिए एक ही तरह की जांच का भी उपयोग कर सकते हैं। –

+0

@AlexeiLevenkov, 'ए-जेड' ने नोट किया। मैंने कभी पहले 'Char.IsNumber' का उपयोग नहीं किया था। सिर के लिए धन्यवाद (अद्यतन कोड)! –

+0

-1, समाधान जांचता नहीं है कि निम्नानुसार क्या है। – Qtax

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