【问题标题】:Create a function for each match in a textarea为文本区域中的每个匹配项创建一个函数
【发布时间】:2021-02-03 17:53:25
【问题描述】:

我有一个文本区域,其中的方括号中有一些表达式。我需要找到方括号内的所有表达式,并为每个表达式添加一些代码(将它们包装在里面)

到目前为止,我只设法识别表达式,但我找不到运行循环函数来处理它们的方法(我在想一个“每个”函数) 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( /\[(.*)\]/  );
});

从这里开始,我尝试的每个功能都不起作用......有什么建议吗?

【问题讨论】:

    标签: jquery function foreach


    【解决方案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>

    上面的代码将匹配 [] 中的文本并创建一个列表并将其附加到具有 id 输出的 div 中。从问题中无法判断这是否是您所说的wrap them inside

    【讨论】:

    • 感谢poushy,这是一大进步,唯一缺少的是最终结果应该和原文一致,像这样:
      大家David 想开着车环游世界巴黎 Fia
    • 在这种情况下,您可以使用替换而不是匹配。我已经修改了答案以反映相同。
    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 2020-07-28
    • 2014-06-06
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多