2012-07-04 43 views
2

即時嘗試編寫一個解析器爲jquery tablesorter插件,我真的需要一隻手在這...我得到這個日期格式:dd/mm/yyyy hh:mm:ss a.m. | p.m。 ,我不能作出適當的正則表達式使用JavaScript .match功能......,這是我得到的代碼:jquery tablesorter複雜日期的addParser

 $.tablesorter.addParser({ 
      id: 'DateParser', 
      is: function(s) { 
        return false; 
      }, 
      format: function(s) { 
        var date = s.match(/^(\d{1,2})-(\d{1,2})-(\d{4}) :(\d{1,2}):(\d{1,2})$/) 
        var d = date[1]; 
        var m = date[2]; 
        var y = date[3]; 
        var H = date[4]; 
        var M = date[5]; 
        var S = date[6]; 
        var MS = 0; 

        return new Date(y, m, d, H, M, S, MS).getTime(); 
      }, 
      type: 'numeric' 
    }); 
    $("#tabletosort").tablesorter({ 
      headers: { 
        0: { 
          sorter: 'DateParser' 
        } 
      } 
    }); 

匹配()調用的結果總是空...感謝很多提前!

回答

2

您當前的正則表達式的形式dd-mm-yyyy :mm:ss匹配日期 - 你已經錯過了時間,在上午/下午,並用-代替/,所以這就是爲什麼它沒有以往任何時候都匹配與dd/mm/yyyy hh:mm:ss a.m.|p.m.日期格式。糾正這些問題給你的東西像下面這樣:

/^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d\d):(\d\d) (a\.m\.|p\.m\.)$/ 

...然後你測試的最後一個子表達式調整爲上午或下午的時間。

(注:我不認爲你需要的分秒,讓個位數,所以我改變了這部分需要兩個數字)

+0

感謝!!!!!!你真棒!!!!!我引用你原來的答案,我只是改變一個點的斜線,然後腳本開始按照我的意願工作!aniway你用\ /而不是。我想這是正確的做法,再次感謝!!!!!! – user1502531

+1

不客氣。是的,正則表達式中的'.'匹配任何字符,以便匹配實際文字'.',您需要在正則表達式中將其作爲'\ .'進行轉義。請注意,正則表達式本身並不能保證有效的日期,因爲它會接受'99/99/9999 99:99:99 a.m.'。 – nnnnnn