Javascript全字w

时间:2012-05-27 01:17:00

标签: javascript regex replace

我正在寻找一种显示文本段落的方法,并允许用户点击单个单词以突出显示它。

我发现了一些会在每个单词周围放置一个代码的代码。所有这些都很有效,但是......

当我有一些像Soufflé这样的文字时,它并不认为只是一个单词。

这是我正在使用的代码。

var p = $('#storyText');

p.html(function(index, oldHtml) {
    return oldHtml.replace(/\b([\w+-éñó\u00F1\u00E9]+)\b/g, '< span class="storyWord">$1< /span>');
})

似乎工作正常,直到我在单词的开头或结尾都有重音。

1 个答案:

答案 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()

演示:http://jsbin.com/elegod