我正在尝试使用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'” 当看到谷歌铬。我认为最好的方法是使用正则表达式。但如果我弄错了,那么我愿意改变一个更好的方式。有什么想法吗?
答案 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"]