【问题标题】:Regular expression with parenthesis in datatable数据表中带括号的正则表达式
【发布时间】:2020-05-02 00:33:37
【问题描述】:

我不精通正则表达式。但我正在根据这样的列过滤我的引导数据表:

这将过滤掉第 4 列中包含“HOUSE”的任何行

myTable.columns(4).search('^(?:(?!HOUSE).)*$\r?\n?', true, false).draw();

现在我想编写另一个搜索,从其中包含“HOUSE(MAIN)”的同一列中删除所有内容。我试过了:

myTable.columns(4).search('^(?:(?!HOUSE(MAIN)).)*$\r?\n?', true, false).draw();

但它不起作用。

【问题讨论】:

  • () 在正则表达式中有特殊含义,需要转义才能匹配字面:'^(?:(?!HOUSE\(MAIN\)).)*$\r?\n?'
  • 这能回答你的问题吗? Regular Expression for matching parentheses
  • 如果你只是做一个简单的文本搜索,你不需要正则表达式;只需使用indexOf 进行文本搜索并检查它是否大于-1。字符串替换也是如此:如果您正在执行精确的文本搜索,则不需要正则表达式。如果您需要将搜索限制在字符串的开头,您的正则表达式可以更简单:^HOUSE.

标签: javascript regex datatables


【解决方案1】:

() 是正则表达式中的 special characters,用于捕获或分组项目。

因此,使用正则表达式'HOUSE(MAIN)' 实际上会匹配字符串'HOUSEMAIN',而不是'HOUSE(MAIN)'。我不确定这是否真的是你想要的(cmets 可能会有更多帮助),但正则表达式需要转义括号,所以:

HOUSE\(MAIN\)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多