9

createViewModaldatepickerCreateModaldd.mm.yyyyの形式で私の最初のフィールドを検証したいと思います。私はいくつかの正規表現を探していたと私はそれを見つけた:ブートストラップ検証日DD.MM.YYYY jquery

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

しかし、この正規表現はかなり良いではないようだ - それは今年からちょうど2桁の数字を引く("20"代わり"2016"の)

あなたが書くことができます私の完全正規表現dd.mm.yyyy11.05.2016)?私はブートストラップバリデーターを通してこの正規表現でコールバック関数を作成できると思う。

誰かがすでにこの正規表現または類似の解決策を持っている場合、私はそれを聞いて嬉しいです!

<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で欲しい:


あるいは、うるう年を除いて、すべてを正しく検証短い(それでも面倒な)正規表現の方法を使用することができますdate fromat dd.mm.yyyy(29.04.2016)。* - あなたはまだそれを持っていないのですか?以下の答えが受け入れられます。 –

+0

はい?何が問題ですか? – Stefan0309

+0

最も速い方法は '(19 \ d \ d | 20 \ d \ d)' – 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

この正規表現を使用してみてください:

あなたはテキストボックスを使用している場合、それは私のために

^(?:(?: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

でテストしました。私は私の答えpleseを編集しました。 –

+0

まだ、私はエラーがあります。このリンクをtestlink 'https:// regex101.com/r/oP8cE5/1'として見つけてください。 – Stefan0309

7

それが今年のちょうど最初の2桁を引く理由などで偽陽性を持っているが、彼らは第三キャプチャグループで唯一のものであることです。それを修正するには、ちょうど囲む第三()の残りの2桁を含めることができます。

(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で述べたように、29.02.2015と同様に、ブラウザーでJSを介して、またはバックエンド/サーバー側で使用されている言語でチェックする必要があります。 –

+0

@ Dr.Rhino、実際に私が投稿した長い正規表現は、閏年、世紀の規則さえ扱います。 (: – ndn

+0

私はもう一度、はい、あなたが正しいことを確認しました - それは "_Ah、humanity_"が実際の日付に一致する直前に投稿されています - 29.02.2015は正規表現のこのバージョンと一致しません。 –

関連する問題