用javascript捕捉文本html的文字

时间:2016-05-31 16:04:24

标签: javascript regex regex-negation

我完全陷入困境...... 我在javascript中的水平不足以让我摆脱这个问题 我尝试使用正则表达式javascript来捕获文本中的单词,不包括法语文本中的html标签 这是我现在的正则表达式

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

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

以下是测试https://regex101.com/r/oT9uC1/10

的直接链接

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

2 个答案:

答案 0 :(得分:2)

不要使用正则表达式来解析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>';
});

答案 1 :(得分:1)

以下是我将元素中的每个单词转换为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>");
}