我完全陷入困境...... 我在javascript中的水平不足以让我摆脱这个问题 我尝试使用正则表达式javascript来捕获文本中的单词,不包括法语文本中的html标签 这是我现在的正则表达式
([^\r\n\t\f>< /]+(?!>))\b
问题是我的口音被排除在外并抓住我不应该使用的正则表达式标签(例如br html标签)
以下是测试https://regex101.com/r/oT9uC1/10
的直接链接我的目标是用span html标签替换所有单词 提前谢谢你的帮助
答案 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>");
}