javascript - javascript 的匹配单词函数

标签 javascript jquery html regex

我正在尝试编写一些代码,将输入到文本输入中的单词与 div 中“可搜索”类的单词进行匹配,并突出显示这些单词。如果一个或多个单词匹配并且没有不匹配的单词,我现在所拥有的就有效。例如,如果可搜索的 div 具有短语:hello world,并且输入中为 hello world,它将突出显示两者。如果输入只有 hello,它会突出显示该单词。但如果输入有 hello mars,它不会突出显示单词 hello,因为 mars 不在字符串中。这个jsFiddle证明了这一点。任何想法都非常感激。这是代码。谢谢。

JavaScript:

if($('#search').val().length !== 0){

   $('.searchable').each(function(){

   var search_value = $("#search").val();
   var search_regexp = new RegExp(search_value, "g");

   $(this).html($(this).html().replace(search_regexp,"<span class ='highlight'>"+search_value+"</span>"));

  });
}

html:

<input type = "text" id = "search" value = "hello mars">
<div class = "searchable">hello world</div>

最佳答案

类似这样的事情:

// http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
String.prototype.pregQuote = function()
{
  return this.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
};

var keyword = $("#search").val();
var searchRegex = new RegExp( '(' + keyword.pregQuote() + ')' , "ig" );

$('.searchable').each(function(){
  var html = $(this).html();
  html = html.replace( searchRegex , '<span class="highlight">$1</span>');
  $(this).html( html );
});

关于javascript - javascript 的匹配单词函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24514690/

相关文章:

javascript - Laravel 4 和 Angular JS 以及 Twitter Bootstrap 3 分页

javascript - jQuery find ('#selector' ).length 导致 Chrome 控制台出错

javascript - 对于由 JavaScript 插入的链接,不会显示警报

javascript - 获取 slideToggle 以展开和显示隐藏内容

javascript - 使用 jquery 更改显示的选择选项

jquery - 等到一个 Action 结束再开始另一个 Action

javascript - Cookies不会通过javascript命令执行提示和警报

javascript - 打开表单上传对话框时如何设置默认文件夹

javascript - 构建我的第一个 Javascript 库时出错

html - 如何将 HTML 文件加载到 Canvas 中?