Javascript JS正则表达式在数据表中匹配带连字符的整字

Javascript JS正则表达式在数据表中匹配带连字符的整字,javascript,regex,jquery-datatables,Javascript,Regex,Jquery Datatables,不确定这是最好在这里发布还是在JQDataTables论坛上发布。我在这儿试试 对dataTable中的列进行精确的正则表达式匹配,有两种情况,一种很好,但第二种不太好 案例1 列数据 Joe Bob Sue Bobby Joey Joe Bob Sue Bobby Joey Ann Jo-Ann 所以我想要所有有乔,鲍勃,苏的那一排,而不是鲍比和乔伊的那一排 我的正则表达式看起来像这样 \b(Joe|Bob|Sue)\b 而且

不确定这是最好在这里发布还是在JQDataTables论坛上发布。我在这儿试试

对dataTable中的列进行精确的正则表达式匹配,有两种情况,一种很好,但第二种不太好

案例1 列数据

Joe    
Bob    
Sue   
Bobby    
Joey
Joe    
Bob    
Sue   
Bobby    
Joey
Ann
Jo-Ann
所以我想要所有有乔,鲍勃,苏的那一排,而不是鲍比和乔伊的那一排

我的正则表达式看起来像这样

 \b(Joe|Bob|Sue)\b
而且效果很好。我看到三个名字的过滤行,而不是Bobby和Joey。 我使用管道分隔列表,因为我还将过滤器列表存储在URL参数中,以便可以对过滤后的版本进行图书标记

现在我的问题是: 案例2 列数据

Joe    
Bob    
Sue   
Bobby    
Joey
Joe    
Bob    
Sue   
Bobby    
Joey
Ann
Jo-Ann
在这种情况下,我想要鲍勃·苏和安·罗尔斯

使用这个正则表达式

\b(Bob|Sue|Ann)\b
获取我想要的行,但也获取Jo-Ann行,我假设是因为-被视为单词之间的边界

使用[\w-]进行操作,但在管道分隔列表中似乎无法使其工作。 下面是小提琴

谢谢


Dave

您可以创建一个DIY边界

使用捕获或非捕获组,我们可以断言字符串的开头或空格字符在前面,同时断言空格字符或字符串的结尾遵循分组模式

(?:^| )(Bob|Sue|Ann)(?: |$)
如果愿意,也可以使用否定字符类。在alternation操作符的右侧,我们不匹配上面正则表达式中的空格字符,而是匹配一个不是连字符或单词字符的字符,这更接近于扩展单词边界的目的,并对后面的组执行相同的操作

(?:^|[^-\w])(Bob|Sue|Ann)(?:[^-\w]|$)

线路馈电可以应用于您的情况

/\s*(Bob|Joe|Ann)\s*\n/g
您也可以应用锚。请参阅演示


如果我将Bob Joe添加到数据中,前两个似乎不起作用。set尝试了dataTable中的第三个,也没有运气。