मैं सिर्फ एक Regex एक MySQL datetime नियंत्रित करने के लिए लिखा था (और मुझे लगता है कि यह इतना अंतर नहीं है ओरेकल या अन्य डेटाबेस सर्वर के लिए erent)।
यह रेगेक्स बहुत सुरक्षित है और तिथि की वैधता को नियंत्रित करता है (28, 30 & में 31 महीने, और यहां तक कि 2 9/02 के साथ भी वर्ष)। फिर, यह समय को नियंत्रित करता है।
YYYY-MM-YYY HH: MM: SS
यहाँ Regex (काफी लंबा) है: टाइमस्टैम्प प्रारूप इस एक है
((((19|20)([2468][048]|[13579][26]|0[48])|2000)-02-29|((19|20)[0-9]{2}-(0[4678]|1[02])-(0[1-9]|[12][0-9]|30)|(19|20)[0-9]{2}-(0[1359]|11)-(0[1-9]|[12][0-9]|3[01])|(19|20)[0-9]{2}-02-(0[1-9]|1[0-9]|2[0-8])))\s([01][0-9]|2[0-3]):([][0-9]):([][0-9]))
से मेल खाता है
2013-04-05 17:59:59 | 2013-07-30 01:22:42 | 20 99-12-30 23:59:59 | 2016-02-28 00:00:00
गैर से मेल खाता है
2016-02-29 -01: 01: 02 | 3000-04-24 17:42:21 | 2012-03-03 24:24:02 | 2012-03-03 21:60:45
मुझे नहीं लगता कि मैं एक और अधिक सुरक्षित बना सकता हूं। बहुत फनल और परीक्षण किया। कृपया, अगर आप इसका इस्तेमाल, मुझे प्रतिक्रिया देने के लिए संकोच नहीं करते;)
FYI करें: आप सिर्फ समय के बिना तारीख Regex नियंत्रण के लिए देखो, तो कृपया वहां यह पता लगाने के लिए: Regular Expression to match valid dates (मेरी पोस्ट की जाँच करें) ।
चीयर्स
2009/14/35 27:63:60 मान्य है? यदि नहीं, तो यह regexes के साथ बदसूरत होने जा रहा है। – balpha
आप किस भाषा का उपयोग कर रहे हैं? यदि यह पर्ल है, तो आप रेगेक्स से कोड का आह्वान कर सकते हैं, जो शायद एकमात्र तरीका है जिसे आप आसानी से पढ़ सकते हैं। यह सत्यापित करने के लिए कोड कि क्या यह एक लीप वर्ष है, यह सत्यापित करने के लिए कि 2 9 फरवरी मौजूद है या नहीं, यह सब कुछ बदसूरत हो जाएगा। –
मैं रेगेक्स का उल्लेख करता हूं, केवल एक सुझाव के रूप में। मैं जावास्क्रिप्ट का उपयोग कर रहा हूं और किसी भी विकल्प का स्वागत करता हूं। –