2017-05-08 53 views

回答

0

這是非常具體的你問關於輸入,但它應該工作:

function parseInput(input) { 
    var expr = /from \"(.*)\" to \"(.*)\"/g; 
    var matches = expr.exec(input); 
    if (input !== null) { 
     var start = new Date(matches[1]); 
     var end = new Date(matches[2]); 
     if(start === null || end === null) { 
      return null; 
     } 
     return { 
      start: start, 
      end: end 
     } 
    } 
    return null; 
} 

現在你應該得到這樣的:

parseInput('from "01-Apr-2013" to "01-Apr-2016"'); 

對象{開始:星期一2013年4月1日00 :00:00 GMT-0500(中央夏令時間),結束:週五2016年4月1日00:00:00 GMT-0500(中央夏令時間)}

+0

我需要rgex到檢索算法的日期範圍在jQuery的數據表(FYI https://datatables.net/examples/api/regex.html),我知道其他的選擇,但我需要只通過rgex –

+0

我的目標是在jQuery數據表中做Ag-grid數據表(即https://www.ag-grid.com/javascript-grid-filtering/#gsc.tab=0)過濾器 –

0

代替正則表達式,您可以使用此javascript代碼。

var dateFrom = "01-Apr-2013"; 
    var dateLimit = "01-Apr-2016"; 
    var dateCheck = "04-Apr-2014"; //Suppose that this is the result of document.getElementById("userinput").innerHTML 


    var d1 = formatDate(dateFrom).split("-"); 
    var d2 = formatDate(dateLimit).split("-"); 
    var c = formatDate(dateCheck).split("-"); 

    var from = new Date(d1[2], parseInt(d1[1]) - 1, d1[0]); 
    var to = new Date(d2[2], parseInt(d2[1]) - 1, d2[0]); 
    var check = new Date(c[2], parseInt(c[1]) - 1, c[0]); 


    (check > from && check < to) ? console.log("The user input is within the date range.") : console.log("Your date " + dateCheck + " is not between " + dateFrom + " and " + dateLimit + "."); 


    function formatDate(date) { 
     var monthNames = [ 
      "Jan", "Feb", "Mar", 
      "Apr", "May", "Jun", "Jul", 
      "Aug", "Sep", "Oct", 
      "Nov", "Dec" 
     ]; 
     var month = date.substr(3, 3) 
     var day = date.substr(0, 2); 
     var monthIndex = date.indexOf(month) + 1; 
     var year = date.substr(7, 4); 

     return day + '-' + monthIndex + '-' + year; 
    } 
+0

我需要rgex來在jquery數據表中選擇日期範圍( FYI https://datatables.net/examples/api/regex.html),我知道其他選項,但我只需要通過rgex –