![](/img/trans.png)
[英]Google Apps Script/Javascript search and replace with regex not working
[英]RegEx pattern to search for numbers in Google Apps Script (Javascript 1.6)
我有一個從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 "";}
}
問題在於您的正則表達式字符串在temas
數組中的temas
。 由於您要檢查的字符串是否為1
,然后是10
字符串,因此任何包含10
字符串將始終匹配1
。 由於比賽結束后您無法參加比賽,因此您將永遠無法達到10
。
你需要移動10
前面1
則預期它會工作。
var temas =[" 0", "10", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
第一個問題是您通過數字從低到高搜索。 這將意味着我們找到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
字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.