正则表达式在多个上完全匹配

时间:2017-06-28 11:11:36

标签: jquery regex datatable datatables

我试图弄清楚如何编写正确的正则表达式,所以当jquery DataTables搜索一列时,它会找到完全匹配。我有C-,C +,C的值,如果有人点击" C"我需要它才能获得C的精确匹配,而不是其他2.

如果他们选择C-和C,它应该使用其中任何一个获取所有条目,但不应包含C +。

我尝试了正则表达式:" C- | C +"但它也抓住了所有的C.

这是我创建正则表达式的代码:

$("input[name='tourneyLevel']").on("change", function(e) {
    var levelSelected = [];
    $("input[name='tourneyLevel']:checked").each(function(index, city) {
        levelSelected.push([$(this).val()]);
    });

    var regex = levelSelected.join("|");
    console.log(regex);

    $('.dataTable').DataTable().column(4).search(regex, true, false).draw();
});

1 个答案:

答案 0 :(得分:4)

" +"和" - "在RegEx中往往具有特殊含义。在构建RegEx时,尝试将它们转义并将短语放在一个组中,因为您希望匹配整个组。

因此,您的用户正在搜索" C +"?

(C\+)

您的用户正在搜索" C"或" C - "?

(C\-)|(C)

您的用户正在搜索" C - "或" C +"?

(C\-)|(C\+)

您的用户正在搜索三种可能性中的任何一种?

(C\-)|(C)|(C\+)

加号通常表示"前一组中的一个或多个"。减号通常用于范围或排除东西。搜索这些特殊字符时要小心。当按特定顺序搜索多个字符时,您应该尝试将它们与括号分组。

此外,反斜杠用于转义字符串中的字符。通过连接字符串构造RegEx时,必须使用第二个反斜杠转义反斜杠,以便生成的RegEx包含单个反斜杠。这可能听起来很复杂,但归结为:

在通过连接字符串构建RegEx时,使用两个反斜杠来转义RegEx中的字符。

要确保只匹配此特定序列,您可以使用两个更重要的特殊字符:

  • ^开始
  • $结束

例如,您可以使用RegEx (^C$)仅匹配单个" C"。序列开始,恰好包含字符" C"并在使用此RegEx时结束。