在jquery中验证和排序日期
validate and sort date in jquery
我正在使用表分类器插件对表进行排序。我希望能够捕捉格式为的日期列
dd/MM/yyyy HH:MM
然后对它们进行正确的排序(为此,我必须将日期与年份进行切换)。
以下是我迄今为止所做的:
ts.addParser({
id: "hebreLongDate",
is: function (s) {
return /'d{1,2}['/'-]'d{1,2}['/'-]'d{2,4} d{1,2}:d{1,2}/.test(s);
}, format: function (s, table) {
var c = table.config;
s = s.replace(/'-/g, "/");
// reformat the string in ISO format
s = s.replace(/('d{1,2})['/'-]('d{1,2})['/'-]('d{4})/, "$3/$2/$1");
return $.tablesorter.formatFloat(new Date(s).getTime());
}, type: "numeric"
});
它不起作用。
如果有任何帮助,我将不胜感激,尤其是如果它能解释正确正则表达式的含义。
谢谢,Omer
解析器并没有真正验证日期。is
函数只检测格式是否与format
函数的模式匹配,这就是为什么更容易使其返回false,并使用headers
选项手动设置列的解析器:
headers: {
1: { sorter: "hebreLongDate" }
},
上面的is
函数需要模式中的HH:mm
,因此如果列中的第一个表单元格不匹配,它将忽略该解析器。因此,无论哪种方式,手动设置解析器都会更好。
无论如何,以下是我将如何编写您正在描述的解析器(演示):
$.tablesorter.addParser({
id: "hebreLongDate",
is: function(s) {
return false;
},
format: function(s, table, cell, cellIndex) {
s = s
// replace separators
.replace(/'s+/g," ").replace(/['-.,]/g, "/")
// reformat dd/mm/yyyy to yyyy/mm/dd
.replace(/('d{1,2})['/'s]('d{1,2})['/'s]('d{4})/, "$3/$2/$1");
return s ? $.tablesorter.formatFloat( (new Date(s).getTime() || ''), table) : s;
},
type: "numeric"
});
至于解释正则表达式,上面的代码和您的问题中的代码没有太大区别。最大的区别在于,上面的代码确保日期和时间之间只有一个空格,并且日期可以用斜线、破折号、句点、逗号或空格(即1-1-2000
、1 1 2000
等)分隔。
更新:如果你想让这个解析器被自动检测,那么使用下面的is
正则表达式(更新的演示)。但需要注意的是,此regex无法区分mmddyyyy和ddmmyyyy,因此它将始终检测ddmmyyyy。要覆盖此项,请将表头分拣机选项设置为"shortDate":
is: function(s) {
// testing for ##-##-####, so it's not perfect; time is optional
return (/(^'d{1,2}['/'s]'d{1,2}['/'s]'d{4})/).test((s || '').replace(/'s+/g," ").replace(/['-.,]/g, "/"));
},
相关文章:
- 如何合并不同集合的游标并按日期排序
- 如何在智能表中按日期对项目进行排序
- 在d3.js中对x轴上的日期进行排序
- 按ISO 8601日期对数组进行排序
- 如何按日期对Arraylist进行排序,然后将其传递给JSP
- 不带插件的JavaScript排序日期
- 以角度 js 格式排序日期
- 在MongoDB中保存和排序日期
- JS对象排序日期排序
- 排序日期不返回已排序的日期
- 数组排序日期未按预期工作
- 在jquery中验证和排序日期
- 有没有更好的智能排序日期的方法?
- 在Javascript中排序日期
- jQuery数据表-按隐藏列排序日期
- 如何排序日期和字符串在同一列在jquery插件有文件jquery. datatable .js
- 在JavaScript中排序日期字符串数组的最佳方式
- 谷歌自定义搜索排序日期范围标准不工作
- 排序日期对象数组错误javascript
- 猫鼬聚集而不是排序日期