用javascript捕捉文本html中的单词

用javascript捕捉文本html中的单词,javascript,regex,regex-negation,Javascript,Regex,Regex Negation,我完全被卡住了。。。 我的javascript水平不足以解决这个问题 我尝试使用正则表达式javascript捕获文本中的单词,不包括法语文本上的html标记 这是我现在的正则表达式 ([^\r\n\t\f>)\b 问题是,我的口音被排除在外,并抓住了我的正则表达式标记(例如br html标记) 这里是测试的直接链接 我的目标是用span html标记替换所有word 提前感谢大家的帮助不要使用正则表达式解析HTML;总有一天会失败 为此,请使用DOM API,因为它比其他任何人都更了解HTM

我完全被卡住了。。。 我的javascript水平不足以解决这个问题 我尝试使用正则表达式javascript捕获文本中的单词,不包括法语文本上的html标记 这是我现在的正则表达式

([^\r\n\t\f>)\b
问题是,我的口音被排除在外,并抓住了我的正则表达式标记(例如br html标记)

这里是测试的直接链接


我的目标是用span html标记替换所有word
提前感谢大家的帮助

不要使用正则表达式解析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>';
});
html=words.map(函数(word){
span.textContent=word;
返回“”+span.textContent+“”;
});

以下是我如何将元素中的每个单词转换为一个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);
}
var-elementWithWords=document.getElementById('myElementId')//获取对元素的引用
var words=elementWithWords.textContent.split(/\s/)//在空格上拆分以获得单个单词
elementWithWords.textContent=''//清除元素的html
对于(var i=0;i
编辑: 您可能会将第一个用于一些财务处理,但是,下面应该可以工作并保留您的格式。请注意,无论何时设置某些内容的innerHTML,请注意它可能会使您面临跨站点脚本攻击

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>");
}
var-elementWithWords=document.getElementById('myElementId')//获取对元素的引用
var words=elementWithWords.textContent.split(/\s/)//在空格上拆分以获得单个单词
对于(var i=0;i
我需要对上面的每个单词进行处理render@WiktorStribiżew-oh-great,在我的例子中,只有最后一个单词是Voilá(不包括重音)。还有可能得不到html标记吗?正则表达式实际上不能可靠地解析html标记。trincot给出了正确的答案:使用DOM。我的目标是在第二步中用span html标记替换所有单词,这是可能的?是的,这是可能的,但是如果您有一个关于如何将单词包装到标记中的问题,那么这真的是一个不同的问题。我还是在回答中加了一些东西。我建议你也看看之前的问题(比如)或者发布一个新的问题?这回答了你的问题吗?你能告诉我吗?谢谢,但是你的代码删除了我的html代码中的html标记和空格/点等
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>");
}