尝试使用tablesorter addParser时出现正则表达式错误

时间:2013-03-28 20:32:30

标签: jquery regex tablesorter

我正在尝试使用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'
});

我得到的错误是:“未捕获的TypeError:无法读取null的属性'1'” 当看到谷歌铬。我认为最好的方法是使用正则表达式。但如果我弄错了,那么我愿意改变一个更好的方式。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这个正则表达式:

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

$匹配字符串的 end 。您希望^与开头匹配。 \n与换行符匹配。 \w匹配字母。

然后,输出顺序从1到6为:

["2", "06", "PM", "Thu", "Mar", "28"]