首先,要想到用户可能输入任意字符,所以要先处理正则里面的有特殊意义的字符。如下:
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标准的源码格式,这样出现在显示内容中的<>就会变成<>这种格式的。同时搜索内容也要进行这种转义的替换,确保搜索的内容和线上的内容转换成相同内容的不同格式。
最终代码如下:
/*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,'&').replace(/</g,'<').replace(/>/g,'>')
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>的嵌套。不过也不影响效果。
分享到:
相关推荐
在本文中,我们将深入探讨如何利用正则表达式实现关键字的高亮显示,尤其适用于文本搜索和代码高亮场景。下面将详细阐述这一技术的实现原理和步骤。 1. **正则表达式基础** 在JS中,正则表达式是通过构造函数`...
在本实例中,我们关注的是如何利用正则表达式进行文本搜索,并实现搜索结果的高亮显示。这在网页开发中非常常见,比如在搜索框中输入关键词后,将匹配到的关键词在页面上突出显示。 首先,我们需要了解正则表达式的...
本示例主要探讨如何实现这个功能,以"搜索栏输入文字后,在内容中高亮显示搜索文字demo"为例进行讲解。 首先,我们要明白搜索高亮的基本原理。当用户在搜索栏输入关键词后,系统会遍历内容,找到与关键词匹配的部分...
综上所述,React中实现搜索结果中关键词高亮显示涉及到对组件状态和属性的管理、使用filter函数过滤数组、正则表达式的应用、字符串的替换以及安全地处理HTML内容。这些知识点结合在一起,构成了一个完整的关键词...
在IT领域,尤其是在网页...总的来说,这个压缩包提供的代码示例对于开发者来说是一个实用的工具,它可以帮助构建一个高效且直观的网页搜索功能,通过高亮显示搜索关键字,使用户能更快地理解和定位到他们关心的信息。
总结来说,通过JavaScript的正则表达式replace方法,我们可以实现对页面中特定关键字的高亮显示,这在用户搜索功能的实现中非常有用。使用捕获组和回溯引用来匹配和替换字符串,可以灵活地对文本进行处理,使得交互...
本示例中的"richtextBox高亮显示指定文本.rar" 文件提供了一个解决方案,解决了在`richtextBox` 中高亮特定文本的问题,这在很多应用中都是非常实用的功能,比如代码编辑器、文档搜索或者文本注解等。 首先,我们来...
在IT领域,搜索关键字高亮显示是一项常见的功能,它能够帮助用户快速定位并理解搜索结果中的重要信息。这种技术广泛应用于搜索引擎、文本编辑器、数据分析工具等软件中,提升用户体验,使得查找目标内容更为直观。 ...
在IT行业中,全文内容的关键字搜索与高亮显示是一项常用且重要的功能,尤其在搜索引擎、文档管理系统以及在线阅读平台等领域。这个功能可以帮助用户快速定位到他们关心的信息,提高信息检索的效率。以下将详细讲解这...
json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 首先是对...
以上就是关于“jquery段落文字内容高亮显示提示”的详细说明,它涵盖了 jQuery 的 DOM 操作、事件处理、以及简单的正则表达式应用。这个知识点对于前端开发者来说是实用且基础的,有助于提升用户体验。
**Ajax分页与搜索结果高亮...通过结合这两者,用户能够在不刷新整个页面的情况下轻松浏览大量数据,同时搜索结果的高亮显示使得查找信息更加便捷。开发者可以参考上述原理和示例代码,根据具体项目需求进行定制化实现。
要实现高亮显示,我们需要在`Adapter`的`bindViewHolder()`方法中,根据查询关键字对数据进行处理,然后更新对应的视图元素(如TextView)以突出显示匹配的文本。 具体实现步骤如下: 1. 创建`SearchView`实例并...
3. **语法高亮**:不同编程语言的正则语法差异会以不同的颜色显示,便于理解和学习。 4. **替换功能**:不仅校验匹配,还支持测试替换操作,查看替换后的结果。 5. **代码生成**:可以直接生成PHP、Perl或JavaScript...
在压缩包中的"带搜索的树,结果高亮显示ztree"可能包含了实现这一功能的示例代码、配置文件和样例数据,可以通过学习和研究这些资源来理解和实现类似的搜索高亮功能。 在实际应用中,可能还需要考虑性能优化,例如...
本资源"jQuery内容查找高亮显示代码.zip"提供了一个实现类似Word文本查找功能的解决方案,它能对网页中的指定内容进行高亮显示,提升用户的阅读体验。 首先,我们来看一下这个代码的核心功能。jQuery内容查找高亮...
本知识点主要关注的是如何使用易语言进行网页操作,特别是网页内容的查找与高亮显示。下面将详细阐述这一主题。 首先,我们要了解在易语言中实现网页操作的基础组件——WebBrowser控件。WebBrowser控件是易语言提供...
2. **语法高亮与提示**:RegexBuddy支持不同语言的正则表达式语法,并对语法进行高亮,帮助开发者识别和理解模式。 3. **测试与调试**:该工具允许用户输入测试文本,检查正则表达式是否按照预期工作。它会显示匹配...
QQ空间代码高亮显示源码主要涉及到网页编程和前端开发技术,用于在QQ空间中展示代码片段时,增强代码的可读性和美观性。代码高亮通常包括语法着色、行号显示、缩进引导、代码折叠等功能。下面将详细阐述相关知识点:...
在JavaScript编程中,高亮显示文本输入框是一个常见的需求,特别是在开发富文本编辑器、代码编辑器或搜索功能时。这个“Js高亮显示文本输入框.rar”压缩包可能包含了实现这一功能的相关代码和资源。下面我们将深入...