Создайте функцию для каждого совпадения в текстовой области

#jquery #function #foreach

#jquery #функция #foreach

Вопрос:

У меня есть текстовая область с некоторыми выражениями в квадратных скобках. Мне нужно найти все выражения внутри квадратных скобок и добавить некоторый код к каждому выражению (обернуть их внутрь)

До сих пор мне удалось идентифицировать только выражения, но я не могу найти способ запустить функцию цикла для их обработки (я думал о «каждой» функции) пример для html-кода:

 <div id="myDiv">
   <textarea>
      everyone [David] wants to travel the world [Paris] with a car [Fiat]
   </textarea>
</div>
  

мой код jQuery до сих пор:

 $(document).ready(function() {
    var myText = $('#myDiv').text();
    var regex= /[([^]]*)]/;
    var result = myText.match( /[(.*)]/  );
});
  

Отсюда каждая функция, которую я пробую, просто не работает … есть предложения?

Ответ №1:

Я бы посоветовал проверить ваше регулярное выражение, если оно возвращает правильное совпадение. Возможно, это не возвращает правильное совпадение, которое вы ожидаете.

 $(document).ready(function() {      
     var myText = $('#myDiv').text();
     var result = myText.replace(/[/g, '<span>').replace(/]/g, '</span>');
     $('#output').append(result);
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myDiv">
   <textarea>
      everyone [David] wants to travel the world [Paris] with a car [Fiat]
   </textarea>
   <div id="output"></div>
</div>  

Приведенный выше код сопоставит текст внутри [], создаст список и добавит его в div с выводом идентификатора. Не могу понять из вопроса, если это то, что вы имеете в виду wrap them inside .

Комментарии:

1. Спасибо, пуши, это серьезное усовершенствование, единственное, чего не хватает, так это того, что конечный результат должен быть с исходным текстом, например: <div id=»output»> все, <span>Дэвид</span>, хотят путешествовать по миру, <span>Париж</span>, на машине <span>Fia</span></div>

2. В этом случае вы можете использовать replace вместо match . Я изменил ответ, чтобы отразить то же самое.