我试着为jquery tablesorter插件编写一个解析器,我真的需要这个...我得到了这个日期格式:dd / mm / yyyy hh:mm:ss am.m. | p.m。并且我无法使用正确的正则表达式使用javascript .match函数...,这是我得到的代码:
$.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'
}
}
});
match()调用的结果总是为null ...非常感谢!
答案 0 :(得分: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\.)$/
...然后你测试最后一个子表达式来调整上午或下午的小时数。
(注意:我认为您不希望分钟和秒数允许个位数,因此我已将该部分更改为需要两位数。)