正则表达式只匹配确切的单词

时间:2016-07-27 17:18:32

标签: javascript regex

我使用以下函数来给出带有类名的某些单词:

$.fn.wrapInTag = function(opts, color) {

  var tag = opts.tag || 'span'
    , words = opts.words || []
    , regex = RegExp(words.join('|'), 'gi') // case insensitive
    , replacement = '<'+ tag + ' class="' + color +'">$&</'+ tag +'>';

  return this.html(function() {
  return $(this).html().replace(regex, replacement);
});
};

问题是它与中的冗余相匹配。我怎样才能使它只匹配确切的单词(红色但不冗余)?我做了一些研究,发现我需要做这样的事情:

(\w+)

但我不知道在 gi

旁边添加它的位置

我将运行添加的功能       一句话就是:

<p>Only one redundant word is red</p>

$('p').wrapInTag({
      tag: 'span',
      words: ['red']
}, 'blue');

由于

1 个答案:

答案 0 :(得分:4)

我认为它与(\w+)没有任何关系。如果我正确地阅读问题,你想匹配一个单词,而不是单词的子串。这可以使用单词边界\b

来实现

同样如此\b(is|red|blue)\b将完全匹配isredblue

MDN on word boundary regex