不知道这是最好的张贴在这里或JQ数据表论坛。我在这里试试。
对dataTable中的列进行精确的正则表达式匹配,有两种情况,一种工作得很好,但第二种不太好!
用例1列数据
Joe
Bob
Sue
Bobby
Joey
所以我想要所有有乔,鲍勃,苏而不是鲍比和乔伊的行。
我的正则表达式看起来像这样;
\b(Joe|Bob|Sue)\b
而且效果很好。我看到三个名字的过滤行,而不是鲍比和乔伊。我使用管道分隔列表,因为我还将过滤器列表存储在URL参数中,以便过滤后的版本可以标记为书签。
我的问题案例:用例2列数据
Joe
Bob
Sue
Bobby
Joey
Ann
Jo-Ann
在这种情况下,我想鲍勃苏和安罗斯。
使用此正则表达式
\b(Bob|Sue|Ann)\b
获取我想要的行,但也获取Jo-Ann行,我假设是因为-被视为单词之间的边界。
尝试使用[\w-],但似乎无法让它在管道分隔列表上工作。下面是小提琴。
http://refiddle.co/1v1j
3条答案
按热度按时间uelo1irk1#
您可以创建一个DIY边界。
使用捕获或非捕获组,我们可以Assert字符串的开头或空格字符在前面,同时Assert空格字符或字符串的结尾遵循您的分组模式。
如果愿意,也可以使用求反字符类。在交替操作符的右侧,我们匹配的不是上面正则表达式中的空格字符,而是一个不是连字符或单词字符的字符,这更接近于扩展单词边界的意图,并对后面的组执行相同的操作。
zfycwa2u2#
换行可应用于您的情况
xa9qqrwz3#
你也可以应用锚点。看演示。
https://www.regex101.com/r/fG5pZ8/3