दिलचस्प पोस्ट
त्रुटि को ठीक कैसे करें: रूट तत्व के बाद दस्तावेज़ में मार्कअप को अच्छी तरह से बना होना चाहिए पीपीपी में इनपुट और आउटपुट की सफाई का पवित्र कंसा? Android TimePickerDialog अधिकतम समय सेट करें स्क्रिप्ट टैग का संदर्भ किस प्रकार किया जा सकता है जो वर्तमान में क्रियान्वित स्क्रिप्ट को लोड करता है? गैर-स्थिर चर को एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता एक निजी संशोधक के साथ, अन्य ऑब्जेक्ट्स में सदस्य सीधे प्रवेश क्यों कर सकते हैं? JSON में टिप्पणियों का उपयोग किया जा सकता है? अजगर 2 या अजगर 3 में सीएसवी फ़ाइल लिखने का पोर्टेबल तरीका रैखिक समीकरण को हल करना स्केल फ़ंक्शन 22 पैरामीटर तक सीमित क्यों हैं? एंड्रॉइड स्पलैशस्क्रीन मैं सी # में अपने नियंत्रण में चलती प्रभाव कैसे जोड़ सकता हूं? स्विफ्ट | बाधाओं को प्रोग्रामेटिक रूप से जोड़ना कागज पर सटीक आयामों में MATLAB प्लॉट को छपाई मोकीटो: अमान्य यूएसओएफ़मैटर्स अपवाद

जावास्क्रिप्ट की तारीख रेगेक्स डीडी / एमएम / वाई वाई वाई वाई

मैं जानता हूँ कि वहाँ बहुत सारे regex धागे हैं, मुझे एक विशिष्ट पैटर्न की आवश्यकता है जो मैं कहीं भी फिन नहीं कर सकता था

यह regex एक YYYY-MM-DD प्रारूप में मान्य करता है

/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/ 

मुझे डीडी / एमएम / वाई वाई वाई वाई के पैटर्न की आवश्यकता है (दिन पहले क्योंकि यह स्पेनिश में है और केवल "/", "-" को अनुमति नहीं दी जानी चाहिए)

मैंने कई regex पुस्तकालयों की खोज की है और मुझे लगता है कि यह एक काम करना चाहिए … लेकिन जब से मैं regex से परिचित नहीं हूँ मुझे यकीन नहीं है कि यह इस तरह मान्य है

 (0[1-9]|[12][0-9]|3[01])[ \.-](0[1-9]|1[012])[ \.-](19|20|)\d\d 

मुझे स्लैश से बचने के लिए भी नहीं पता है, मैं स्ट्रिंग में तर्क को "देखना" करने की कोशिश करता हूं लेकिन यह मेरे लिए मैट्रिक्स कोड को देखने की कोशिश करने की तरह है I मैं एक विकल्प .js में regex स्ट्रिंग रख रहा हूँ

 [...] }, "date": { "regex": (0[1-9]|[12][0-9]|3[01])[ \.-](0[1-9]|1[012])[ \.-](19|20|)\d\d, "alertText": "Alert text AAAA-MM-DD" }, "other type..."[...] 

तो, अगर regex ठीक है, तो मैं इसे कैसे बचा सकता हूं? अगर ऐसा नहीं है, तो सही रेगेक्स क्या है और मैं इसे कैसे बचा सकता हूं? : पी

बहुत बहुत धन्यवाद

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट की तारीख रेगेक्स डीडी / एमएम / वाई वाई वाई वाई"

मैं डीडी / एमएम / याय प्रारूप के लिए इस फ़ंक्शन का उपयोग करता हूं:

 // (new Date()).fromString("3/9/2013") : 3 of september // (new Date()).fromString("3/9/2013", false) : 9 of march Date.prototype.fromString = function(str, ddmmyyyy) { var m = str.match(/(\d+)(-|\/)(\d+)(?:-|\/)(?:(\d+)\s+(\d+):(\d+)(?::(\d+))?(?:\.(\d+))?)?/); if(m[2] == "/"){ if(ddmmyyyy === false) return new Date(+m[4], +m[1] - 1, +m[3], m[5] ? +m[5] : 0, m[6] ? +m[6] : 0, m[7] ? +m[7] : 0, m[8] ? +m[8] * 100 : 0); return new Date(+m[4], +m[3] - 1, +m[1], m[5] ? +m[5] : 0, m[6] ? +m[6] : 0, m[7] ? +m[7] : 0, m[8] ? +m[8] * 100 : 0); } return new Date(+m[1], +m[3] - 1, +m[4], m[5] ? +m[5] : 0, m[6] ? +m[6] : 0, m[7] ? +m[7] : 0, m[8] ? +m[8] * 100 : 0); } 

आप डीजे / एमएम / वाई वाई वाईवाई के लिए जो वांछित हैं उसे प्राप्त करने के लिए आप YYYY / MM / डीडी की पुष्टि करने वाले रिजक्स ले सकते हैं और इसे फ्लिप कर सकते हैं:

 /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/ 

बीटीडब्लू – यह डीजेडीएम / एमएम / वाई वाई वाई वाई या डीडी-एमएम-वाई वाई वाई वाई के लिए वैध है

पीएस यह 31/02/4899 जैसे तारीखों की अनुमति देगा

सामान्य प्रारूप से मिलान करने के लिए एक regex अच्छा है, लेकिन मुझे लगता है कि आपको दिनांक श्रेणी को पार्स करना चाहिए, जैसे:

 function parseDate(str) { var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/); return (m) ? new Date(m[3], m[2]-1, m[1]) : null; } 

अब आप वैध तारीखों की जांच करने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं; हालांकि, अगर आपको रोलिंग के बिना वास्तव में मान्य करने की जरूरत है (जैसे "31/2/2010" स्वतः "3/3/2010" पर रोल नहीं होता है) तो आपको एक और समस्या है

[संपादित करें] यदि आप रोलिंग के बिना भी मान्य करना चाहते हैं, तो आप यह सुनिश्चित करने के लिए मूल स्ट्रिंग से तुलना करने के लिए एक चेक जोड़ सकते हैं कि यह वही दिनांक है:

 function parseDate(str) { var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/) , d = (m) ? new Date(m[3], m[2]-1, m[1]) : null , nonRolling = (d&&(str==[d.getDate(),d.getMonth()+1,d.getFullYear()].join('/'))); return (nonRolling) ? d : null; } 

[संपादित करें 2] यदि आप शून्य-गद्दे वाली तारीखों (जैसे "08/08/2013") के साथ मैच करना चाहते हैं तो आप ऐसा कुछ कर सकते हैं:

 function parseDate(str) { function pad(x){return (((''+x).length==2) ? '' : '0') + x; } var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/) , d = (m) ? new Date(m[3], m[2]-1, m[1]) : null , matchesPadded = (d&&(str==[pad(d.getDate()),pad(d.getMonth()+1),d.getFullYear()].join('/'))) , matchesNonPadded = (d&&(str==[d.getDate(),d.getMonth()+1,d.getFullYear()].join('/'))); return (matchesPadded || matchesNonPadded) ? d : null; } 

हालांकि, यह असंगत गद्दे वाली तारीखों के लिए अभी भी असफल हो जायेगी (जैसे "8/08/2013")

यहां से एक नज़र डालें http://forums.asp.net/t/1410702.aspx/1

यह निम्नलिखित नियमित अभिव्यक्ति विवरण का प्रयोग करें, यह लीप वर्ष का भी समर्थन करेगा।

 var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 

उदाहरण

यदि आप पहले से ही जावास्क्रिप्ट में हैं, तो आप सिर्फ regEx का उपयोग करने के बजाय एक तारीख को मान्य करने के लिए तिथि का उपयोग कर सकते हैं।

तिथि के लिए RegEx वास्तव में बोझ साल और सभी के साथ विशेष रूप से सही पाने के लिए बोझल और कठिन है

 ((?=\d{4})\d{4}|(?=[a-zA-Z]{3})[a-zA-Z]{3}|\d{2})((?=\/)\/|\-)((?=[0-9]{2})[0-9]{2}|(?=[0-9]{1,2})[0-9]{1,2}|[a-zA-Z]{3})((?=\/)\/|\-)((?=[0-9]{4})[0-9]{4}|(?=[0-9]{2})[0-9]{2}|[a-zA-Z]{3}) 

रेगेक्स इस पर संकलन करें

 2012/22/Jan 2012/22/12 2012/22/12 2012/22/12 2012/22/12 2012/22/12 2012/22/12 2012-Dec-22 2012-12-22 23/12/2012 23/12/2012 Dec-22-2012 12-2-2012 23-12-2012 23-12-2012 

इस का उपयोग करने की कोशिश करो ..

 [0-9]{2}[/][0-9]{2}[/][0-9]{4}$ 

यह इस पैटर्न DD/DD/DDDD साथ काम करना चाहिए जहां डी कोई अंक (0-9) है

स्केप स्लैश बस से पहले / उपयोग करें / और यह बच जाएगा ( \/ => / )

अन्यथा आप regex डीडी / एमएम / वाई वाई वाईवाई अगले हो सकते हैं:

/^[0-9]{2}[\/]{1}[0-9]{2}[\/]{1}[0-9]{4}$/g

स्पष्टीकरण:

  • [0-9] : बस नंबर
  • {2} या {4} : लंबाई 2 या 4. आप {2,4} साथ-साथ दो संख्याओं (2 और 4 में इस मामले में) की लंबाई कर सकते हैं
  • [\/] : चरित्र /
  • g : ग्लोबल – या m : मल्टीलाइन (वैकल्पिक, अपने requeriments देखें)
  • $ : स्ट्रिंग का अंत करने के लिए एंकर (वैकल्पिक, अपने requeriments देखें)
  • ^ : स्ट्रिंग का प्रारंभ (वैकल्पिक, अपने requeriments देखें)

उपयोग की एक उदाहरण:

 var regex = /^[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}$/g; var dates = ["2009-10-09", "2009.10.09", "2009/10/09", "200910-09", "1990/10/09", "2016/0/09", "2017/10/09", "2016/09/09", "20/09/2016", "21/09/2016", "22/09/2016", "23/09/2016", "19/09/2016", "18/09/2016", "25/09/2016", "21/09/2018"]; //Iterate array dates.forEach( function(date){ console.log(date + " matches with regex?"); console.log(regex.test(date)); }); 

jquery.validationengine-en.js फ़ाइल में निम्नलिखित परिवर्तन करें और jquery.validationengine-en.js वर्ष सहित डीडी / एमएम / jquery.validationengine-en.js इनलाइन सत्यापन अपडेट करें:

 "date": { // Check if date is valid by leap year "func": function (field) { //var pattern = new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/); var pattern = new RegExp(/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})$/); var match = pattern.exec(field.val()); if (match == null) return false; //var year = match[1]; //var month = match[2]*1; //var day = match[3]*1; var year = match[3]; var month = match[2]*1; var day = match[1]*1; var date = new Date(year, month - 1, day); // because months starts from 0. return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day); }, "alertText": "* Invalid date, must be in DD-MM-YYYY format" 

जिन लोगों को साल 1 9 00 की तुलना में वर्षों को मान्य करने की आवश्यकता है, उनके लिए निम्नलिखित चाल करना चाहिए। वास्तव में यह [@OammieR][1] द्वारा दिए गए ऊपर दिए गए उत्तर के समान है, लेकिन [@OammieR][1] सहित वर्षों के साथ

 /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((18|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((18|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/ 

उम्मीद है कि ऐसे किसी व्यक्ति को 1 9 00 से पहले, जैसे 01/01/1855 , आदि के लिए मान्य करने की आवश्यकता है।

प्रारंभिक विचार के लिए धन्यवाद @OammieR

मैं 30/31 महीने की जांच के लिए इस नियमित का निर्माण करता हूं और फरवरी से 29 तक आऊंगा

 new RegExp(/^((0[1-9]|[12][0-9]|3[01])(\/)(0[13578]|1[02]))|((0[1-9]|[12][0-9])(\/)(02))|((0[1-9]|[12][0-9]|3[0])(\/)(0[469]|11))(\/)\d{4}$/) 

मुझे लगता है, यह अधिक सरल और अधिक लचीला और पर्याप्त पूर्ण है

शायद पहले भाग अनुबंध हो सकता है लेकिन मुझे ठीक से नहीं मिल रहा है