Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Tablesorter-按姓氏排序,忽略中间名/首选名_Javascript_Regex_Tablesorter - Fatal编程技术网

Javascript Tablesorter-按姓氏排序,忽略中间名/首选名

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'); } } 不幸的是,有一些人有一个首

我目前正在使用Mottie版本的tablesorter来构建一个目录。我在同一个表单元格中有一个name字段(结合firstname和lastname)。大多数数据条目都很简单(Firstname LastName),我已经设置了代码,以便通过使用以下命令交换姓氏和姓氏进行排序:

文本提取:{
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>
名称