0

我正在尝试使用 tablesorter jquery 库对时间/日期列进行排序。我在使用正则表达式并对其进行排序时遇到问题。有人可以帮忙吗?我的时间/日期格式是:

下午 2:06

周四 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 回答