我有一个从 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]
:匹配 2
到 9
范围内的单个字符
|
:另一个OR
0
:匹配字符 一次,后跟一个
0
字符。
关于javascript - 在 Google Apps 脚本中搜索数字的正则表达式模式 (Javascript 1.6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274414/