Regex

2013-09-30 11 views
5

मैं 12hr और 24 घंटे के प्रारूप में समय सत्यापित करने के लिए दो regex का उपयोग कर रहा है, लेकिन कुछ मामलों में यह नहीं working.Am मैं कुछ इन regex में गलत है? यह काम नहीं कर रहाRegex

00 PM पर मैं का इस्तेमाल किया है regex

^(([0]?[0-9]|1[0-2]):[0-5][0-9][ ][aApP][mM])|((1[3-9]|2[0-3]):[0-5][0-9])$ 

23 की तरह 24 घंटे के प्रारूप मान्य के लिए:: 10:00 AM/12 की तरह 12 घंटे के प्रारूप मान्य के लिए 00/12: 00 मैं regex

^(([0]?[0-9]|1[0-2]):[0-5][0-9])|((1[3-9]|2[0-3]):[0-5][0-9])$ 
+2

बिंदु कुछ मामलों में आपके regexes के साथ काम नहीं करते हैं? क्या आपने अपने रेगेक्स की जांच करने के लिए एक्सप्रेसो जैसे कुछ रेगेक्स-टूल की कोशिश की है? – Ingo

+0

नियमित अभिव्यक्ति का प्रारूप एप्लिकेशन पर निर्भर करता है। आप पर्ल-नियमित अभिव्यक्ति लिखते हैं। ये emacs के साथ काम नहीं करेगा। वेब खोज। वहां आपको कई पूर्व-निर्मित नियमित अभिव्यक्तियां मिलती हैं, उदाहरण के लिए: http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5&AspxAutoDetectCookieSupport=1। – Tobias

+0

मुझे लगता है कि आप इस डेमो को देखने के लिए validation.try के बजाय जेएस का उपयोग कर सकते हैं: http: //keith-wood.name/timeEntry.html –

उत्तर

11

का इस्तेमाल किया है मुझे यकीन नहीं है कि आपके पास 24 एच में से कुछ क्यों हैं आपके पहले regex में आर प्रारूप। 12 घंटे प्रारूप अकेले इस के लिए सरल किया जा सकता है:

new Regex(@"^(?:0?[0-9]|1[0-2]):[0-5][0-9] [ap]m$", RegexOptions.IgnoreCase); 

और 24 घंटे के प्रारूप के लिए, आप इसे करने के लिए आसान बनाने में कर सकते हैं:

new Regex(@"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"); 

या गठबंधन करने के लिए दोनों:

new Regex(@"^(?:(?:0?[0-9]|1[0-2]):[0-5][0-9] [ap]m|(?:[01][0-9]|2[0-3]):[0-5][0-9])$", RegexOptions.IgnoreCase); 
+1

+1, लेकिन आपको 24h regex में 'IgnoreCase' की आवश्यकता नहीं है, और आप '[01]' वैकल्पिक बनाना चाहते हैं या नहीं। –

+0

@TimPietzcker धन्यवाद, यह मुझे कॉपी/पेस्टिंग लाइनों xD के लिए है – Jerry