正则表达式在findText()中不匹配

时间:2013-09-30 20:33:49

标签: javascript google-apps-script

我试图将颜色更改为文档中的某些文本,我需要regexp。 所以,我尝试使用函数findText来搜索我的文本在所选文本中的位置,但是我遇到了一些与正则表达式相匹配的麻烦。

查看此示例脚本

function onOpen() {
  DocumentApp.getUi().createMenu('Test')
      .addItem('Find regex in sel', 'findRegex'))
      .addToUi();
}

function findRegex() {
    var ui = DocumentApp.getUi();
    var selection = DocumentApp.getActiveDocument().getSelection();
    var txt = selection.getSelectedElements()[0].getElement().asText();
    var inp = ui.prompt('Regex to search:').getResponseText();
    var regex = new RegExp(inp);
    ui.alert('Found in "' + txt.getText()
           + '"\n  Re: ' + txt.findText(regex)
           + '\n  In: ' + txt.findText(inp));
}

这会提示搜索某些内容,然后从中构建一个正则表达式。然后使用正则表达式和原始字符串来搜索所选文本。

好吧,我不知道怎样做才能得到regex匹配:我总是得到null:如果要搜索的文本是“foobarbaz”,我输入foo,只有普通字符串匹配。 如果我输入/foo/,显然没有任何匹配。

如何使用正则表达式使用findText进行搜索? 考虑一下我必须“撰写”正则表达式,例如/foobar/ + /\d+/,其中foobar是用户输入的模式。

1 个答案:

答案 0 :(得分:2)

好吧,我认为找到了难点:传递给findText的正则表达式总是一个String对象,即使它里面有正则表达式。

我尝试在文字"fo+"中搜索"fooo"并且匹配正确。