谷歌应用程序脚本:regexmatch基于两个标准,包括一个传递的变量



我使用SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied()来过滤工作表,但没有正确设置regexmatch((函数。我需要根据两个标准过滤列A:

  1. 必须包含"ak1"或"ak2">
  2. 并且,必须包含myVar,这是一个将传递给脚本的变量

我知道如何编写regexmatch语句来获得标准1(regexmatch(A:A, "(?i)ak1|ak2")(,但我一直在纠结如何将其与标准2相结合。

我迄今为止最好的尝试:

var regex = new RegExp( myVar, 'g' );
var crit = '=regexmatch(A:A, "^(?=.*ak1|ak2|)(?=.*myVar)")'

编辑以添加示例:

如果列A包含

Chr_rq_ak1
Chr_rq_ak2
Chr_rq_ak6
Chr_gv_ak1

我希望以下内容可见,其余内容隐藏:

Chr_rq_ak1
Chr_rq_ak2

您将使用AND:

=AND(REGEXMATCH(A2,"(?i)ak(?:1|2)"),REGEXMATCH(A2,"myVar"))

如果要使用交替,必须将它们分组为(?=.*(?:k1|ak2)),并在末尾省略|

如果后面只有一个字符,也可以使用字符类。

^(?=.*ak[12])(?=.*myVar)

Regex演示

最新更新