9

मैं createViewModal, datepickerCreateModal पर dd.mm.yyyy प्रारूप में अपना पहला फ़ील्ड मान्य करना चाहता हूं। मैं कुछ regex लिए खोज रहा था और मुझे मिल गया:बूटस्ट्रैप सत्यापन दिनांक DD.MM.YYYY jquery

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

लेकिन ऐसा लगता है कि इस regex काफी अच्छा नहीं है - यह एक साल ("2016" की "20" बजाय)

आप लिख सकते हैं से सिर्फ दो अंक खींचती मुझे dd.mm.yyyy (11.05.2016) के लिए एक पूर्ण regex है? मुझे लगता है कि मैं बूटस्ट्रैप सत्यापनकर्ता के माध्यम से इस regex के साथ कॉलबैक समारोह बनाने में सक्षम हो जाएगा।

अगर किसी के पास पहले से ही यह रेगेक्स या इसी तरह का समाधान है, तो मुझे यह सुनकर खुशी होगी!

<div class="modal fade" id="createViewModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal"> 
     <span aria-hidden="true">&times;</span><span class="sr-only">Close</span> 
     </button> 
     <h4 class="modal-title" id="myModalLabel">New SAR</h4> 
     </div> 
     <div class="modal-body"> 
     <div id="formregister"> 
      <form action="" class="form-horizontal" role="form" id="createViewModal"> 
      <p class="qc-errmsg" style="display: none;">&nbsp;</p> 
      <div class="form-group"> 
       <label for="Date" class="col-sm-2 control-label">Date</label> 
       <div class="col-sm-10"> 
       <input type="text" class="form-control" id="datepickerCreateModal" name="Date" placeholder="Date"> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label for="Client" class="col-sm-2 control-label">Client</label> 
       <div class="col-sm-10"> 
       @Html.DropDownList("Client1", (SelectList)ViewBag.ClientID, "", new { @class = "form-control", tabindex = "1", id = "client" }) 
       </div> 
      </div> 
      <div class="form-group"> 
       <label for="EventType" class="col-sm-2 control-label">Event Type</label> 
       <div class="col-sm-10"> 
       @Html.DropDownList("Eventtype", (SelectList)ViewBag.EventTypeID, "", new { @class = "form-control", tabindex = "2", id = "event" }) 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-sm-offset-2 col-sm-10"> 
       <button type="button" class="close1 btn btn-default" data-dismiss="modal">Close</button> 
       <button type="submit" value="cart" class="btn btn-primary">Save Changes</button> 
       </div> 
      </div> 
      </form> 
     </div> 
     <!-- form register --> 
     <div id="successfulpost" style="font: bold 12px Verdana, Arial, Helvetica, sans-serif; color: #ff0000; display: none;"> 
      <p class="jst-txt"> 
      <span>Thank you,</span> for showing your Interest !! 
      </p> 
      <p class="jst-txt">Our property advisor shall get in touch with you very shortly..</p> 
     </div> 
     </div> 
     <!-- model body--> 
    </div> 
    </div> 
</div> 
<script> 
    $(function() { 
     $('#createViewModal').bind('show', function() { 
      $("#datepickerCreateModal").val($(this).val() + "."); 
     }); 
    }); 
    function clearCreateModal() { 
     $('#event').val(0); 
     $('#client').val(0); 
     $('#datepickerCreateModal').val(""); 
     $('#datepickerCreateModal').focus(); 
    } 
    $('.close,.close1').click(function() { 
     $('#client').val(0); 
     $('#event').val(0); 
     $('#datepickerCreateModal').val(''); 
     $('#createViewModal').data('bootstrapValidator').resetForm(); 
    }); 
    $('#dateFrom, #dateTo,#datepickerCreateModal,#datepickerEditModal').datepicker({ 
     todayBtn: "linked", 
     daysOfWeekHighlighted: "0,6", 
     calendarWeeks: true, 
     autoclose: true, 
     format: "dd.mm.yyyy" 
    }); 
    $.fn.dataTable.ext.search.push(
     function (settings, data, dataIndex) { 
      var minDate = $('#datepicker10').val(); 
      var maxDate = $('#datepicker11').val(); 
      var ageInputs = data[1].split('.'); 
      var age = new Date(ageInputs[2], ageInputs[1] - 1, ageInputs[0]); 
      //var getdate = date.getDate(); 
      var min; 
      if (minDate.indexOf(".") > -1) { 
       var input = minDate.split('.'); 
       var count = input.length; 
       if (count > 2) { 
        min = new Date(input[2], input[1] - 1, input[0]); 
       } 
      } 
      var max = new Date(maxDate.split('.')[2], maxDate.split('.')[1] - 1, maxDate.split('.')[0]); 
      if ((isNaN(min) && isNaN(max)) || 
      (isNaN(min) && age <= max) || 
      (min <= age && isNaN(max)) || 
      (min <= age && age <= max)) { 
       return true; 
      } 
      return false; 
     } 
); 
    var t; 
    $(document).ready(function() { 
     'use strict'; 
     $('#createViewModal').bootstrapValidator({ 
      // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later 
      feedbackIcons: { 
       valid: 'glyphicon glyphicon-ok', 
       invalid: 'glyphicon glyphicon-remove', 
       validating: 'glyphicon glyphicon-refresh' 
      }, 
      fields: { 
       Date: { 
        message: 'Date is not valid', 
        validators: { 
         notEmpty: { 
          message: 'Date is required and cannot be empty' 
          //}, 
          //stringLength: { 
          // min: 6, 
          // max: 30, 
          // message: 'The Album Name must be more than 6 and less than 30 characters long' 
          //}, 
          //regexp: { 
          // regexp: /(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d/, 
          // message: 'The Album Name can only consist of alphabetical and number' 
         } 

        } 

        //form.submit(); 
       }, 
       Client1: { 
        message: 'Client is not valid', 
        validators: { 
         notEmpty: { 
          message: 'Client is required and cannot be empty' 
         } 
        } 
       }, 
       Eventtype: { 
        message: 'Event type is not valid', 
        validators: { 
         notEmpty: { 
          message: 'Event type is required and cannot be empty' 
         } 
        } 
       } 

      } 
     }).on('success.form.bv', function (e) { 
      // Prevent form submission 
      //$('#success_message').slideDown({ opacity: "show" }, "slow") // Do something ... 
      $('#createViewModal').data('bootstrapValidator').resetForm(); 

      // Prevent form submission 
      e.preventDefault(); 

      // Get the form instance 
      var $form = $(e.target); 

      // Get the BootstrapValidator instance 
      var bv = $form.data('bootstrapValidator'); 

      // Use Ajax to submit form data 
      $.post($form.attr('action'), $form.serialize(), function (result) { 
       console.log(result); 
      }, 'json'); 

      $.ajax({... }); 
      // Do whatever you want here ... 
     }); 
     t = $('#example').DataTable({ 
      "iDisplayLength": 1000, 
      //dom: 'Bfrtip', 
      buttons: [ 
       'copy', 'csv', 'excel', 'pdf', 'print' 
      ], 
      "columnDefs": [ 
       { 
        "targets": [0], 
        "visible": false, 
        "searchable": false 
       }, 
       { "width": "200px", "targets": 6 } 
      ] 
     }); 
     yadcf.init(t, 
      [ 
       { 
        column_number: 0, 
        filter_type: "multi_select", 
        select_type: 'select2' 
       }, 
       { 
        column_number: 3, 
        filter_type: "multi_select", 
        select_type: 'chosen' 
       }, 
       { 
        column_number: 4, 
        filter_type: "multi_select", 
        select_type: 'chosen' 
       } 
      ] 
    ); 
    }); 
</script> 
+0

* तो, मैं एक के लिए regex हैं:


वैकल्पिक रूप से, आप जिस तरह से कम (लेकिन अभी भी बोझिल) regex कि सही ढंग से सब कुछ की पुष्टि करता है, लीप वर्ष के लिए छोड़कर इस्तेमाल कर सकते हैं तारीख से dd.mm.yyyy (2 9 .04.2016)। * - क्या आपको अभी तक यह नहीं मिला है? नीचे दिया गया जवाब स्वीकार किया जाता है। –

+0

हां? समस्या क्या है? – Stefan0309

+0

सबसे तेज़ तरीका '(1 9 \ डी \ डी | 20 \ डी \ डी)' – sln

उत्तर

7

पहला प्रयास की कोशिश हमेशा \d\d\.\d\d\.\d\d\d\d है।

यह बहुत व्यापक है, जाहिर है। आइए इसे पॉलिश करें।

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

यह अभी भी तरह के साथ 31.02.1999 दिनांकों

+0

हाय के रूप में ढूंढें। आपके कोड के लिए धन्यवाद, मैंने अभी इसका परीक्षण किया है 'https: // regex101.com/r/qH2rX2/1' और ऐसा लगता है कि यह काम नहीं करता .. – Stefan0309

+0

यह काम करता है, बस कोई कब्जा नहीं किया गया समूह। मैं कुछ जोड़ता हूँ। =) इसे जांचें [यहां] (https://regex101.com/r/qH2rX2/2) –

+0

धन्यवाद !! मैं देख रहा था :) – Stefan0309

4

कोशिश इस regex का उपयोग करने के लिए:

यह मेरे लिए काम करता

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ 

अगर आप पाठ बॉक्स का उपयोग कर रहे तो उपयोग करने के लिए jQuery masking

+0

यह काम नहीं कर रहा है। मैंने regex101.com/ – Stefan0309

+0

पर परीक्षण किया है मैंने अपना उत्तर संपादित किया है कृपया इसे एक –

+0

आज़माएं अभी भी मुझे एक त्रुटि है .. कृपया इस लिंक को testlink 'https: // regex101.com/r/oP8cE5/1' – Stefan0309

7

कारण यह सिर्फ पहले दो साल के अंक खींचती झूठे सकारात्मक है कि वे तीसरे कैप्चरिंग समूह में केवल लोगों को हो रहा है। कि ठीक करने के लिए, तो आप सिर्फ enclosing तीसरे () में शेष दो अंक शामिल कर सकते हैं:

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

See it in action

रहस्य को हल किया।


इसके साथ ही कहा, यदि आप हर महीने अलग-अलग दिनों के साथ पूर्ण मान्यता चाहते हैं, छलांग वर्ष है और क्या नहीं, मैं आपको एक previous answer of mine पर एक मामूली बदलाव प्रदान करते हैं। तैयार है?

((?:0[1-9]|[12]\d|3[01])(?=\.(?:0[13578]|1[02]))|(?:0[1-9]|[12]\d|30)(?=\.(?:0[469]|11))|(?:0[1-9]|1\d|2[0-8]|29(?=\.\d{2}\.\d*(?:(?:(?!\d{2}00)(?=\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d)))(?=\.02))\.(\d{2})\.(\d{4,}) 

Experiment yourself

आह, मानवता!

लंबी कहानी छोटी - हाँ, यह वास्तव में जटिल है। यदि आप अधिक अंतर्दृष्टि चाहते हैं तो मूल उत्तर पढ़ें।

((?:0[1-9]|[12]\d|3[01])(?=\.(?:0[13578]|1[02]))|(?:0[1-9]|[12]\d|30)(?=\.(?:0[469]|11))|(?:0[1-9]|1\d|2[0-9])(?=\.02))\.(\d{2})\.(\d{4,}) 

Experiment yourself

+0

परीक्षण किया गया: यह एकमात्र ऐसा उत्तर प्रतीत होता है जो 30.02.2016 या 31.04.2016 को एक मैच के रूप में नहीं मानता है। जैसा कि @ndn द्वारा बताया गया है, 2 9 .02.2015 के लिए और जैसा कि आपको अभी भी ब्राउज़र में जेएस के माध्यम से या बैकएंड/सर्वर पक्ष पर उपयोग की जाने वाली किसी भी भाषा के साथ एक जांच करना होगा। –

+0

@ डॉ। रिनो, वास्तव में लंबे समय तक रेगेक्स जिसे मैंने पोस्ट किया है, यहां तक ​​कि शताब्दी के नियम भी हैं। (: – ndn

+0

मैंने फिर से जांच की और हां, आप सही हैं - "_Ah, मानवता_" केवल वास्तविक तिथियों से मेल खाता है - इसलिए 29.02.2015 आपके रेगेक्स के इस संस्करण के साथ एक मेल नहीं है। मेरे लिए, यह एक सबसे अच्छा जवाब +1 है। –

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