`
小青缨
  • 浏览: 9645 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

通过正则对搜索的内容进行高亮显示

 
阅读更多

首先,要想到用户可能输入任意字符,所以要先处理正则里面的有特殊意义的字符。如下:

function pregQuote_(str){
     return str.replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\|\:])/g, '\\$1');
}
 

 

  做好了上面的基本处理,要对搜索的内容进行高亮显示,一般来说只需要做进行一个简单的替换就好:

如下:
/*
searchValue:搜索的内容
pregSearchValue:处理后的搜索内容
sourceValue:需要进行搜索的内容
*/
pregSearchValue = pregQuote_(searchValue);
var re = new RegExp(pregSearchValue,'g');
sourceValue = sourceValue.replace(re,'<b>' + searchValue + '</b>');
 
 但是,如果我们对某段内容进行搜索,而这段内容是html格式,那么,我们就会希望对标签内的内容不进行搜索,而只对显示的内容进行搜索。那么我们就需要修改我们的替换正则了。
如下:
/*
searchValue:搜索的内容
pregSearchValue:处理后的搜索内容
sourceValue:需要进行搜索的内容
*/
pregSearchValue = pregQuote_(searchValue);
var re = new RegExp('([^>]*)' + pregSearchValue + '([^>]*<)', 'g');
sourceValue = sourceValue.replace(re,'$1<b>' +searchValue+'</b>$2');
var re2 = new RegExp('(>[^<]*)' +pregSearchValue + '([^<]*)', 'g');
sourceValue = sourceValue.replace(re2,'$1<b>' + searchValue +'</b>$2');
 
 但是这个正则只适用于这段内容存在html标签,如果不存在的话就则用前面那个简单的匹配就好了。
如果这段html出现一些<>这种符号,则会影响上面那个正则的判断。
这个时候,我们需要把这段html改成html标准的源码格式,这样出现在显示内容中的<>就会变成&lt;&gt;这种格式的。同时搜索内容也要进行这种转义的替换,确保搜索的内容和线上的内容转换成相同内容的不同格式。
最终代码如下:
/*sourceText:为转义过的html*/
var tempNode = document.createElement('div');
tempNode.innerHTML = sourceValue;
sourceText = tempNode.innerHTML;
function highLightedText(searchValue,sourceText){
/*sourceText:为转义过的html*/
var tempNode = document.createElement('div');
tempNode.innerHTML = sourceValue;
sourceText = tempNode.innerHTML;

searchValue = searchValue.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')
pregSearchValue = pregQuote_(searchValue);

if(if(sourceText.indexOf('<')!=-1){
var re = new RegExp('([^>]*)' + pregSearchValue + '([^>]*<)', 'g');
sourceText = sourceText.replace(re,'$1<b>' +searchValue+'</b>$2');
var re2 = new RegExp('(>[^<]*)' +pregSearchValue + '([^<]*)', 'g');
sourceText = sourceText.replace(re2,'$1<b>' + searchValue +'</b>$2');
}else{
     var re = new RegExp(pregSearchValu, 'g');
     sourceText = sourceText.replace(re,'<b>' + searchValue +'</b>');    
}
return sourceText;
}
 
 不过,由于做了两次遍历,所以会对部分内容做两个<b>的嵌套。不过也不影响效果。
分享到:
评论

相关推荐

    jS 正则表达式实现关键字高亮显示

    在本文中,我们将深入探讨如何利用正则表达式实现关键字的高亮显示,尤其适用于文本搜索和代码高亮场景。下面将详细阐述这一技术的实现原理和步骤。 1. **正则表达式基础** 在JS中,正则表达式是通过构造函数`...

    js 正则表达式实例(搜索字符高亮显示)

    在本实例中,我们关注的是如何利用正则表达式进行文本搜索,并实现搜索结果的高亮显示。这在网页开发中非常常见,比如在搜索框中输入关键词后,将匹配到的关键词在页面上突出显示。 首先,我们需要了解正则表达式的...

    搜索内容高亮显示

    本示例主要探讨如何实现这个功能,以"搜索栏输入文字后,在内容中高亮显示搜索文字demo"为例进行讲解。 首先,我们要明白搜索高亮的基本原理。当用户在搜索栏输入关键词后,系统会遍历内容,找到与关键词匹配的部分...

    react中实现搜索结果中关键词高亮显示

    综上所述,React中实现搜索结果中关键词高亮显示涉及到对组件状态和属性的管理、使用filter函数过滤数组、正则表达式的应用、字符串的替换以及安全地处理HTML内容。这些知识点结合在一起,构成了一个完整的关键词...

    y内容查找高亮显示代码.rar_telephoneot1_y内容查找高亮显示代码

    在IT领域,尤其是在网页...总的来说,这个压缩包提供的代码示例对于开发者来说是一个实用的工具,它可以帮助构建一个高效且直观的网页搜索功能,通过高亮显示搜索关键字,使用户能更快地理解和定位到他们关心的信息。

    JavaScript正则方法replace实现搜索关键字高亮显示

    总结来说,通过JavaScript的正则表达式replace方法,我们可以实现对页面中特定关键字的高亮显示,这在用户搜索功能的实现中非常有用。使用捕获组和回溯引用来匹配和替换字符串,可以灵活地对文本进行处理,使得交互...

    WPF richtextBox高亮显示指定文本.rar

    本示例中的"richtextBox高亮显示指定文本.rar" 文件提供了一个解决方案,解决了在`richtextBox` 中高亮特定文本的问题,这在很多应用中都是非常实用的功能,比如代码编辑器、文档搜索或者文本注解等。 首先,我们来...

    搜索关键字高亮显示

    在IT领域,搜索关键字高亮显示是一项常见的功能,它能够帮助用户快速定位并理解搜索结果中的重要信息。这种技术广泛应用于搜索引擎、文本编辑器、数据分析工具等软件中,提升用户体验,使得查找目标内容更为直观。 ...

    百度全文内容关健搜索,关键字高亮显示出来

    在IT行业中,全文内容的关键字搜索与高亮显示是一项常用且重要的功能,尤其在搜索引擎、文档管理系统以及在线阅读平台等领域。这个功能可以帮助用户快速定位到他们关心的信息,提高信息检索的效率。以下将详细讲解这...

    使用正则表达式的格式化与高亮显示json字符串

    json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 首先是对...

    jquery段落文字内容高亮显示提示

    以上就是关于“jquery段落文字内容高亮显示提示”的详细说明,它涵盖了 jQuery 的 DOM 操作、事件处理、以及简单的正则表达式应用。这个知识点对于前端开发者来说是实用且基础的,有助于提升用户体验。

    Ajax分页与搜索结果高亮显示

    **Ajax分页与搜索结果高亮...通过结合这两者,用户能够在不刷新整个页面的情况下轻松浏览大量数据,同时搜索结果的高亮显示使得查找信息更加便捷。开发者可以参考上述原理和示例代码,根据具体项目需求进行定制化实现。

    android 搜索功能 SearchView+RecyclerView实现 搜索结果高亮显示

    要实现高亮显示,我们需要在`Adapter`的`bindViewHolder()`方法中,根据查询关键字对数据进行处理,然后更新对应的视图元素(如TextView)以突出显示匹配的文本。 具体实现步骤如下: 1. 创建`SearchView`实例并...

    正则工具 正则比对 校验

    3. **语法高亮**:不同编程语言的正则语法差异会以不同的颜色显示,便于理解和学习。 4. **替换功能**:不仅校验匹配,还支持测试替换操作,查看替换后的结果。 5. **代码生成**:可以直接生成PHP、Perl或JavaScript...

    带搜索的ztree 结果高亮

    在压缩包中的"带搜索的树,结果高亮显示ztree"可能包含了实现这一功能的示例代码、配置文件和样例数据,可以通过学习和研究这些资源来理解和实现类似的搜索高亮功能。 在实际应用中,可能还需要考虑性能优化,例如...

    jQuery内容查找高亮显示代码.zip

    本资源"jQuery内容查找高亮显示代码.zip"提供了一个实现类似Word文本查找功能的解决方案,它能对网页中的指定内容进行高亮显示,提升用户的阅读体验。 首先,我们来看一下这个代码的核心功能。jQuery内容查找高亮...

    易语言网页操作之网页查找并高亮显示结果

    本知识点主要关注的是如何使用易语言进行网页操作,特别是网页内容的查找与高亮显示。下面将详细阐述这一主题。 首先,我们要了解在易语言中实现网页操作的基础组件——WebBrowser控件。WebBrowser控件是易语言提供...

    猫头鹰正则测试工具.rar

    2. **语法高亮与提示**:RegexBuddy支持不同语言的正则表达式语法,并对语法进行高亮,帮助开发者识别和理解模式。 3. **测试与调试**:该工具允许用户输入测试文本,检查正则表达式是否按照预期工作。它会显示匹配...

    QQ空间代码高亮显示源码

    QQ空间代码高亮显示源码主要涉及到网页编程和前端开发技术,用于在QQ空间中展示代码片段时,增强代码的可读性和美观性。代码高亮通常包括语法着色、行号显示、缩进引导、代码折叠等功能。下面将详细阐述相关知识点:...

    Js高亮显示文本输入框.rar

    在JavaScript编程中,高亮显示文本输入框是一个常见的需求,特别是在开发富文本编辑器、代码编辑器或搜索功能时。这个“Js高亮显示文本输入框.rar”压缩包可能包含了实现这一功能的相关代码和资源。下面我们将深入...

Global site tag (gtag.js) - Google Analytics