JS正则表达式在数据表中用连字符匹配整个单词
JS regex matching whole words with hyphen In dataTables
不确定最好是在此处发布还是在 JQ dataTables 论坛上发布。我这边试试。
对数据表中的列进行精确的正则表达式匹配,有两种情况,一种很好,但第二种不太好!
案例 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 行。
使用这个正则表达式
\b(Bob|Sue|Ann)\b
获取我想要的行,但也获取 Jo-Ann 行,我假设是因为 - 被视为单词之间的边界。
尝试使用 [\w-] 但似乎无法在竖线分隔的列表中使用它。
下面是 fiddle.
谢谢,
戴夫
您可以创建一个DIY边界。
使用捕获组或非捕获组,我们可以断言字符串的开头或 space 字符在前面,同时断言 space 字符或字符串的结尾在您的后面分组模式。
(?:^| )(Bob|Sue|Ann)(?: |$)
如果您愿意,也可以使用否定字符 class。在交替运算符的右边,我们没有匹配上面正则表达式中的一个space字符,而是匹配一个不是连字符或者单词字符的字符,这样更接近扩展单词边界的意图并对后面的小组做同样的事情。
(?:^|[^-\w])(Bob|Sue|Ann)(?:[^-\w]|$)
你的情况可以换行
/\s*(Bob|Joe|Ann)\s*\n/g
^(?:Bob|Sue|Ann)$
您可以将锚点应用为 well.See 演示。
不确定最好是在此处发布还是在 JQ dataTables 论坛上发布。我这边试试。
对数据表中的列进行精确的正则表达式匹配,有两种情况,一种很好,但第二种不太好!
案例 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 行。
使用这个正则表达式
\b(Bob|Sue|Ann)\b
获取我想要的行,但也获取 Jo-Ann 行,我假设是因为 - 被视为单词之间的边界。
尝试使用 [\w-] 但似乎无法在竖线分隔的列表中使用它。 下面是 fiddle.
谢谢,
戴夫
您可以创建一个DIY边界。
使用捕获组或非捕获组,我们可以断言字符串的开头或 space 字符在前面,同时断言 space 字符或字符串的结尾在您的后面分组模式。
(?:^| )(Bob|Sue|Ann)(?: |$)
如果您愿意,也可以使用否定字符 class。在交替运算符的右边,我们没有匹配上面正则表达式中的一个space字符,而是匹配一个不是连字符或者单词字符的字符,这样更接近扩展单词边界的意图并对后面的小组做同样的事情。
(?:^|[^-\w])(Bob|Sue|Ann)(?:[^-\w]|$)
你的情况可以换行
/\s*(Bob|Joe|Ann)\s*\n/g
^(?:Bob|Sue|Ann)$
您可以将锚点应用为 well.See 演示。