簡體   English   中英

RegEx模式可在Google Apps腳本(Javascript 1.6)中搜索數字

[英]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] :匹配29范圍內的單個字符
| :另一個OR
0 :匹配字符 正好一次,后跟正好一個0字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM