Javascript 用强标记将单词包装成一个字符串,并按顺序列出单词列表

Javascript 用强标记将单词包装成一个字符串,并按顺序列出单词列表,javascript,regex,negative-lookbehind,Javascript,Regex,Negative Lookbehind,我有一个输入,我想匹配字符串列表,但我想匹配每一个输入字,每行一次 即 我想澄清的是: 用每个输入字测试字符串中的每个字 一旦找到一个单词,用一个强标记将其包装起来,并从输入测试中删除该单词 继续下一个单词,依此类推 我尝试使用负lookbehind来完成所有这些,但javascript似乎无法处理这一问题,我可以找到的所有解决方法要么无法处理单词集合,要么需要反转要测试的字符串并使用负lookahead。我认为这两种解决方案都不理想,因为我计划对50~500个字符串运行此测试 试试这个,注意我

我有一个输入,我想匹配字符串列表,但我想匹配每一个输入字,每行一次

我想澄清的是:

用每个输入字测试字符串中的每个字 一旦找到一个单词,用一个强标记将其包装起来,并从输入测试中删除该单词 继续下一个单词,依此类推 我尝试使用负lookbehind来完成所有这些,但javascript似乎无法处理这一问题,我可以找到的所有解决方法要么无法处理单词集合,要么需要反转要测试的字符串并使用负lookahead。我认为这两种解决方案都不理想,因为我计划对50~500个字符串运行此测试


试试这个,注意我的replace regex是人为的:

"Two Three One".replace(/\b\w+\b/gi, "<strong>$&</strong>");
编辑 这是你想要的吗

var text = "Lorem ipsum  One Dolor Foo Two Bar Baz Three Lorem Three Quux One Two";
document.addEventListener('DOMContentLoaded', function() {
  var val = document.getElementById('myInput').value,
      aVals = val.match(/\b\w+/gi);

  aVals.forEach(function(val) {
    text = text.replace(new RegExp(val+'{1}', 'i'), '<span style="color: coral;">$&</span>' );
  });

  // console.log(), essentially
  document.body.innerHTML += text;
})

试试这个,注意我的replace regex是人为的:

"Two Three One".replace(/\b\w+\b/gi, "<strong>$&</strong>");
编辑 这是你想要的吗

var text = "Lorem ipsum  One Dolor Foo Two Bar Baz Three Lorem Three Quux One Two";
document.addEventListener('DOMContentLoaded', function() {
  var val = document.getElementById('myInput').value,
      aVals = val.match(/\b\w+/gi);

  aVals.forEach(function(val) {
    text = text.replace(new RegExp(val+'{1}', 'i'), '<span style="color: coral;">$&</span>' );
  });

  // console.log(), essentially
  document.body.innerHTML += text;
})

您的预期输出与您的解释不匹配。为什么第一个例子中的一个不匹配?我不知道你的意思是什么对不起。它在第一个例子一二三中匹配。在第二个例子中,1-1-3-1根据要求匹配了一次。我不介意,经过再三考虑,我相信我理解这里的逻辑。您的预期输出与您的解释不匹配。为什么第一个例子中的一个不匹配?我不知道你的意思是什么对不起。它在第一个例子一二三中匹配。在第二个例子中,1-1-3-1根据要求匹配了一次。我不介意,经过再三考虑,我相信我理解了这里的逻辑。我没有投反对票,但你的答案用强标签包装了所有单词,忽略了输入中只包装单词的关键要求,一次又一次。这正接近我想要的,但这将使我的第三个例子失败。二三一,一不应该被包装在这个例子中。我也希望用一个正则表达式,而不是一个正则表达式和一个循环。可能不可能我猜我没有投反对票,但是你的答案用强标签包装了所有单词,忽略了只包装输入中出现的单词的关键要求,一次又一次。这越来越接近我想要的,但这将失败我的第三个例子二三一,一不应该在这种情况下包装。我也希望用一个正则表达式,而不是一个正则表达式和一个循环。我想可能不可能