Javascript Tablesorter-按姓氏排序,忽略中间名/首选名
我目前正在使用Mottie版本的tablesorter来构建一个目录。我在同一个表单元格中有一个name字段(结合firstname和lastname)。大多数数据条目都很简单(Firstname LastName),我已经设置了代码,以便通过使用以下命令交换姓氏和姓氏进行排序:Javascript Tablesorter-按姓氏排序,忽略中间名/首选名,javascript,regex,tablesorter,Javascript,Regex,Tablesorter,我目前正在使用Mottie版本的tablesorter来构建一个目录。我在同一个表单元格中有一个name字段(结合firstname和lastname)。大多数数据条目都很简单(Firstname LastName),我已经设置了代码,以便通过使用以下命令交换姓氏和姓氏进行排序: 文本提取:{ 0:函数(节点){ //交换名字和姓氏进行排序 返回$.trim($(node.text()| |“”).replace(/(\w+)\s(\w+)/g,$2$1'); } } 不幸的是,有一些人有一个首
文本提取:{
0:函数(节点){
//交换名字和姓氏进行排序
返回$.trim($(node.text()| |“”).replace(/(\w+)\s(\w+)/g,$2$1');
}
}
不幸的是,有一些人有一个首选的名字,并将出现在表中,如:
[名字(首选名称)姓氏]
排序结果是只按名字排序
例如,它的排序如下:
亚历克斯·亚当斯罗伯特(鲍勃)罗孚
布鲁斯·布莱克
卡特琳·克鲁兹
亚当(戴夫)弗朗西斯
伊莱恩·埃文斯 但我希望它只使用姓氏,例如: 亚历克斯·亚当斯
布鲁斯·布莱克
卡特琳·克鲁兹
伊莱恩·埃文斯
亚当(戴夫)弗朗西斯
罗伯特(鲍勃)罗孚 我并没有完全掌握正则表达式,所以我不确定是否有一种简单的方法可以使它始终按姓氏排序 如果您能提供任何帮助(包括解释一下这个replace.(regex)是如何工作的),我们将不胜感激
谢谢!您需要设置正则表达式以检测首选名称(如果存在)。请使用
?
量词
/* other stuff before the replace function */.replace(/(\w+)\s((?:\(\w+\)\s)?\w+)/g, '$2 $1')
尽管如此,如果输出必须用空格分隔(并且条目并不总是用空格分隔),则需要另一个替换:
.replace(/\)\s/g, ') ')
您需要设置正则表达式以检测首选名称(如果存在)。请使用?
量词
/* other stuff before the replace function */.replace(/(\w+)\s((?:\(\w+\)\s)?\w+)/g, '$2 $1')
尽管如此,如果输出必须用空格分隔(并且条目并不总是用空格分隔),则需要另一个替换:
.replace(/\)\s/g, ') ')
我不会使用textextextraction
方法,因为它适用于所有表格单元格
相反,请尝试此解析器。它使用数组操作将姓氏移动到前面()
不要忘记添加类名来设置解析器:
<th class="sorter-last-name">Name</th>
名称
我不会使用textextextraction
方法,因为它适用于所有表格单元格
相反,请尝试此解析器。它使用数组操作将姓氏移动到前面()
不要忘记添加类名来设置解析器:
<th class="sorter-last-name">Name</th>
名称