javascript - 在 Google Apps 脚本中搜索数字的正则表达式模式 (Javascript 1.6)

标签 javascript regex google-apps-script

我有一个从 0 到 10 的数字数组 ["0", "1", ..., "10"],我正在使用 text.search(array[i]) 其中文本包含“10”(这是 10)。该代码总是找到“1”,但找不到“10”。我可以创建一个 RegExp 来查找 10 吗?

非常感谢。

function analizar(text) {
  var querer =  ["baja", "muestra", "ver", "imprim"];
  var tema = ["contenido", "asunto", "materia", "texto", "leccion"];
  var temas =[" 0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];

  var keys = [querer, tema, temas];
  var resultado = 0;

  var str = []
  for (var a = 0; a < keys.length; a++){
    for (var b = 0; b < keys[a].length; b++){

      var actual = keys[a];
      var buscar = actual[b];

问题就在这里。我不知道如何精确搜索数字 10

      if (a == "2") {var buscar = new RegExp(actual[b]);}
      var val = text.search (buscar)
      if (val > -1) {
        resultado++;
        if(a == "2") {str.push(keys[a][b])}
        break;
      }
    }
  }

  Logger.log(str[0]);

  if (resultado == 3) {return str[0]}
  if (resultado != 3) {return "";}
}

最佳答案

第一个问题是您从低到高搜索数字。这意味着我们找到 1 并返回,而我们应该贪婪地匹配 1 之后的 0 以匹配完整的 10 .

所以只需重新排列你的数组:

var temas =[ "10", "0", "1", "2", "3", "4", "5", "6", "7", "8", “9”];

应该给出正确的输出。

但是,您根本没有使用正则表达式的真正威力。单个正则表达式可以描述整个数组:

/10?|[2-9]| 0/

正则表达式分割:

10? :匹配仅出现一次的字符 1,后跟 0 1 次或 0 次。 (这捕获了 1 情况和 10 情况)
|:这是一个OR运算。将表达式匹配到左侧或右侧。
[2-9] :匹配 29 范围内的单个字符
|:另一个OR
0 :匹配字符 一次,后跟一个 0 字符。

关于javascript - 在 Google Apps 脚本中搜索数字的正则表达式模式 (Javascript 1.6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274414/

相关文章:

javascript - 表单 onsubmit 与提交按钮 onclick

javascript - 使 Kendo UI DropDownList 将 Select Control 的 Title 属性显示为 kendoTooltip

javascript - 使用 Google javascript 客户端库进行 Google + 登录

regex - sed 插入行命令 OSX

Javascript 正则表达式匹配并替换百分号

user-interface - 您可以在 Google 表格单元格中以编程方式生成按钮吗?

google-apps-script - Google文档日期更改

Javascript 子函数错误

std=c++11 和 std=gnu++11 之间的 C++ 标准正则表达式差异

javascript - 如何在菜单按钮上运行不同文档中的功能