首页 文章

用javascript捕捉文本html的文字

提问于
浏览
-1

我完全陷入困境...我在javascript中的水平不足以让我摆脱这个问题我尝试使用正则表达式javascript来捕捉文本中的文字除了法语文本上的html标签这里是我现在的正则表达式

([^\ r \ n \ t \ f> </](?!>))\ b

问题是我的口音被排除在外并且 grab 了我不应该使用的正则表达式标签(例如br html标签)

这是测试的直接链接https://regex101.com/r/oT9uC1/10

我的目标是用span html标签替换所有单词,谢谢你们提前帮助

2 回答

  • 1

    不要使用正则表达式来解析HTML;它总会在某些时候失败 .

    而是使用DOM API,它比其他人更了解HTML:

    var span = document.createElement('span');
    span.innerHTML = html;
    var text = span.textContent;
    var words = text.split(/\s+/);
    console.log(words);
    

    要将每个单词包装在span标记中,您可以像这样继续:

    html = words.map(function (word) { 
        span.textContent = word;
        return '<span>' + span.textContent + '</span>';
    });
    
  • 2

    这是我如何将元素中的每个单词转换为 Span ,我会避免使用正则表达式,因为默认情况下会提供DOM工具 .

    var elementWithWords = document.getElementById('myElementId');  //get a reference to your element
    var words = elementWithWords.textContent.split(/\s/);  //split on whitespace to get individual words
    elementWithWords.textContent= '';  //clear out the html of the element
    for(var i = 0; i < words.length; i++) { //for each word, create a span and append it to the original element
      var word = words[i];
      var wordSpan = document.createElement('span');
      wordSpan.textContent = word;
      elementWithWords.appendChild(wordSpan);
    }
    

    编辑:您可能可以使用第一个与一些finangling,但是,下面应该工作并保持您的格式 . 请注意,无论何时设置innerHTML,都要注意它可能会让您打开Cross Site Scripting Attacks .

    var elementWithWords = document.getElementById('myElementId');  //get a reference to your element
    var words = elementWithWords.textContent.split(/\s/);  //split on whitespace to get individual words
    
    for(var i = 0; i < words.length; i++) { //for each word, create a span and append it to the original element
      var word = words[i];
      elementWithWords.innerHTML = elementWithWords.innerHTML.replace(word, "<span>" + word + "</span>");
    }
    

相关问题