【问题标题】:Multiple filter regex多重过滤器正则表达式
【发布时间】:2015-09-16 02:25:34
【问题描述】:

样本数据:

ID Name User 12 Test Same 14 Xyz Joe 15 Abc John 16 Def Bill 17 Ghi Donald

如果用户搜索 Abc 或 Joe,他应该会得到这些行。

正则表达式:

'Abc|Joe'

输出:

14 Xyz Joe
15 Abc John

现在,如果用户进一步搜索 e,它应该根据之前的输出(检索到 2 行)进行过滤,所以我只会得到 14 Xyz Joe 。这可能使用正则表达式吗?

我正在尝试将所有这些都包含在一个正则表达式中。

`'Abc|Joe and the second filter goes here (All in one regex)'`

用例:用户选择复选框来设置他想对数据应用的过滤器(名称和用户列中的所有数据都可用)。然后他可以使用搜索文本框再次搜索过滤后的结果。

【问题讨论】:

    标签: regex datatables


    【解决方案1】:
    ((firstRegex)(?:.*(secondRegex)))|((secondRegex)(?:.*(firstRegex)))
    
    ((Abc|Xyz)(?:.*(Jo)))|((Jo)(?:.*(Abc|Xyz)))
    

    See Demo

    我们不知道前后哪个正则表达式,所以它有两种情况,我们使用|结合这些情况。如果有更多搜索,建议你写一些代码。

    【讨论】:

      【解决方案2】:

      对于 2 个过滤器:

      /^\d+\s+(?:Abc|Xyz|Def)\s+\S*(?:Jo|ill).*/mg;
      

      如果用户没有指定第二个过滤器,您可以将其留空为(?:)


      如果您阅读几分钟有关正则表达式语法的内容,我很肯定您可以创建这些类型的表达式,所以请允许我推荐:

      1. Regular Expressions Tutorial (regular-expressions.info)。一个非常全面的正则表达式学习教程。
      2. regex101.com。允许您测试不同的表达式并了解模式与 subjet 字符串匹配的方式。

      【讨论】:

      • 我注意到您添加了额外的空格并且我更改了正则表达式。它应该按要求匹配。 Test online
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2017-06-19
      • 2012-12-10
      相关资源
      最近更新 更多