0

tablesorter jquery ライブラリを使用して、時刻/日付の列をソートしようとしています。正規表現と並べ替えに問題があります。誰か助けてくれませんか?私の時刻/日付の形式は次のとおりです。

午後2時6分

3月28日(木)

このような。別の行に日付を入れます。私の正規表現はこれです:

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

日付を解析する私の関数は次のとおりです。

$.tablesorter.addParser({
        id: 'DateParser',
        is: function(s) {
                return false;
        },
        format: function(s) {
                var date = s.match(/$(\d{1,2}):(\d\d):(\d\d) (a\.m\.|p\.m\.) (\d{1,2})\/(\d{1,2})\/(\d{4})$/)
                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'
});

私が得ているエラーは次のとおりです:「Uncaught TypeError: Cannot read property '1' of null」これを行う最善の方法は、正規表現を使用することだと思います。しかし、私が間違っている場合は、より良い方法に変更したいと考えています。何か案は?

4

1 に答える 1

0

この正規表現を試してください:

s.match(/^(\d{1,2}):(\d\d) (AM|PM)\n(\w+) (\w+) (\d{1,2})$/)

$文字列の末尾に一致しました。あなた^は最初に一致したいです。\n改行に一致します。\w文字に一致します。

次に、1 から 6 までの出力の順序は次のとおりです。

["2", "06", "PM", "Thu", "Mar", "28"]
于 2013-03-28T20:36:08.820 に答える