我正在寻找一种显示文本段落的方法,并允许用户点击单个单词以突出显示它。
我发现了一些会在每个单词周围放置一个代码的代码。所有这些都很有效,但是......
当我有一些像Soufflé这样的文字时,它并不认为只是一个单词。
这是我正在使用的代码。
var p = $('#storyText');
p.html(function(index, oldHtml) {
return oldHtml.replace(/\b([\w+-éñó\u00F1\u00E9]+)\b/g, '< span class="storyWord">$1< /span>');
})
似乎工作正常,直到我在单词的开头或结尾都有重音。
答案 0 :(得分:1)
问题是javascript RegExp中的单词字符被简单地定义为[a-zA-z0-9_]
,因此\b
匹配它们与重音字符之间的“边界”。直接匹配单词是一种改进:
$.fn.highlightWords = function(){
return this.html(function(i, html){
return html.replace(/([\w'+-éñó\u00F1\u00E9])+/g, function(m){
return '<span>'+m+'</span>'
})
})
}
$('p').highlightWords()