Шаблон RegEx для поиска чисел в 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 "";}
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
777
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема заключается в порядке ваших строк регулярного выражения в массиве temas. Поскольку вы проверяете строку для 1, а затем для 10, любая строка, содержащая 10, всегда будет соответствовать 1. Поскольку после матча вы ломаетесь, вы никогда не доберетесь до 10.

Вам нужно переместить 10 перед 1, тогда он будет работать должным образом.

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

Большое спасибо. Это идеальное решение

Mario Moreno González 10.05.2018 17:46
Ответ принят как подходящий

Первая проблема заключается в том, что вы выполняете поиск по числам от меньшего к большему. Это будет означать, что мы находим 1 и возвращаемся, тогда как мы должны были быть жадными и сопоставить 0 после 1, чтобы он соответствовал полному 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.

Другие вопросы по теме