如何使用不区分大小写的 findText?

How to use findText case insensitive?

我尝试在 Google 文档中搜索字符串。默认情况下 findText 区分大小写。我如何使用它不区分大小写。

引用说 "Searches the contents of the element for the specified text pattern using regular expressions."

这是我试过的:

function search(string) {
  var pattern = new RegExp(string, "gi");
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var rangeElement = body.findText(pattern);
  while (rangeElement) {
    var offset =rangeElement.getStartOffset();
    var text = rangeElement.getElement().asText().getText();
    html += text;
  } 
}

但它没有找到任何东西。我也试过:

body.findText(pattern(string));body.findText(/string/\i);

还有什么我可以尝试的吗?

正如我们在官方中看到的那样reference,

A subset of the JavaScript regular expression features are not fully supported, such as capture groups and mode modifiers.

此外,注意使用findText()的模式参数:它必须是字符串,而不是RegExp对象。

问题:

  • 将正则表达式 "object" 而不是 "string" 类型发送到 findText()
  • 不区分大小写的语法不正确。

解决方案:

  • 使用正确的 re2 语法
  • 将正则表达式作为字符串发送。这意味着特殊字符 \s 被双重转义 \s

    findText('(?i)Apple') //matches APPLE or AppLe 
    

阅读: