不确定这是最好的发布在这里还是在JQ dataTables论坛上。我会在这里试试。
在dataTable中的列上进行精确的正则表达式匹配,并且有两个案例,其中一个很好但第二个不太好!
案例1 列数据
Joe
Bob
Sue
Bobby
Joey
那么我想要所有拥有Joe,Bob,Sue而不是Bobby和Joey的行。
我的正则表达式看起来像这样;
\b(Joe|Bob|Sue)\b
它很棒。我看到三个名字的过滤行而不是Bobby和Joey。 我使用管道分隔列表,因为我还将过滤器列表存储在URL参数中,因此过滤后的版本可以进行书签标记。
现在我的问题是: 案例2 列数据
Joe
Bob
Sue
Bobby
Joey
Ann
Jo-Ann
在这种情况下,我想要Bob Sue和Ann rows。
使用此正则表达式
\b(Bob|Sue|Ann)\b
获取我想要的行但也得到Jo-Ann Rows,我假设因为 - 被视为单词之间的边界。
使用[\ w-]进行游戏,但似乎无法在管道分隔列表中使用它。 下面是小提琴。
谢谢,
戴夫
答案 0 :(得分:3)
您可以创建 DIY 边界。
使用捕获或非捕获组,我们可以断言字符串的开头或空格字符在断言空格字符或字符串的末尾跟随您的分组模式之前。
(?:^| )(Bob|Sue|Ann)(?: |$)
如果您愿意,也可以使用否定的字符类。在交替运算符的右侧,我们不是匹配上述正则表达式中的空格字符,而是匹配不是连字符或单词字符的字符,这更接近于扩展单词边界的意图并执行相同操作对于随后的小组。
(?:^|[^-\w])(Bob|Sue|Ann)(?:[^-\w]|$)
答案 1 :(得分:0)
可以在您的案例中应用换行
/\s*(Bob|Joe|Ann)\s*\n/g
答案 2 :(得分:0)