正则优化一:仅处理位于标签内的元素

1

2

3

4

5

6

var formatKeyword = text.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') // 转义处理keyword包含的特殊字符,如 /.

var finder = new RegExp(">.*?"++".*?

element.innerHTML = element.innerHTML.replace(finder,function(matched){

return matched.replace(text,"
"+text+)

})// 对提取的标签内文本进行关键字替换

以能解决大多数问题,但依旧存在的问题是,只要标签属性存在类似 < 符号,将会打破匹配规则导致正则提取内容错误, HTML5 dataset 可以自定义任意内容,故这些特殊字符是无法避免的。

1

替换

(推荐教程:html教程)

正则优化二:清除可能影响的标签

1

2

3

4

5

6

7

keyword

=》将闭合标签用变量替换

[replaced1]keyword[replaced2]//闭合标签内 id="keyword" 不会被处理

=》

[replaced1]keyword[replaced2]

=》将暂存变量 replaced 替换为原先标签

keyword

问题:如果 [replaced1] 包含 keyword, 那么替换时将发生异常。

最重要的,当标签值中包含 <> 符号时,此方法也不能正确的提取标签。

总之在经过了N多尝试之后,通过正则都没能有效的处理各种情况。然后换了个思路,不通过字符串的方式,通过节点处理。element.childNodes 可以最有效的清理标签内的干扰信息。

[完美解决方案]通过 DOM 节点处理

1

2

3

4

5

6

keyword 1

keyword 2

通过 parent.childNodes 得到所有子节点。child 节点可以通过 innerText.replce(keyword,result) 的方式替换得到想要的高亮效果,如下: keyword 2 (递归处理:当child节点不含子节点时进行replace操作)。

但是 keyword 1 是属于文本节点,只能修改文本内容,无法增加 HTML,更无法单独控制其样式。而文本节点也不能转换为普通节点。

html5中加亮文本,html实现高亮关键字相关推荐

  1. HTML中消除文本框的高亮边框

    大家都知道form表单中的 input type="text " 默认的边框在点击时是高亮的,那么如何消除这个高亮边框做到和别人家的搜索框一样的效果呢? 方法很简单  下面贴代码: ...

  2. c语言内部超链接,HTML5中文本元素超链接的属性

    本章主要探讨HTML5中文本元素重要的一个超链接,探讨它自身的属性以及路径问题. 超链接的属性 元素属于文本元素,有一些私有属性或者叫局部属性.那么,相对应的还有通用属性或叫做全局属性.这方面的知识, ...

  3. vue项目中 一行文本 文字 根据关键字 改变颜色 改变展示颜色2

    vue项目中 一行文本 文字 根据关键字 改变颜色 改变展示颜色2 <script src="https://unpkg.com/vue@3/dist/vue.global.js&qu ...

  4. #HTML5网页中的文本与图像

    HTML5网页中的文本与图像 无序列表 首先欢迎大家来看我信息安全小萌新的博客!下面我会和大家分享我对于HTML5的学习经验,今天我很想的是HTML5网页中的文本与图像处理问题. 我先放一个案例,通过 ...

  5. HTML5中常见的列表标签包括,介绍几个常用的HTML5标签

    一.Html的基本结构: 网页的文本.图片等信息: 二.Head部分:用于表示网页的元数据即描述网页的基本信息 其常用标签及属性有: 1.title标签:浏览器标签页显示的标题 2.meta标签:其常 ...

  6. HTML5 - contenteditable 富文本编辑器

    简介 上图是我自己没事用 contenteditable 写着玩的,一个有点像 VS Code 的脚本编辑器.主要是脚本要根据类型高亮,比如方法名黄色.关键字紫色. contenteditable 是 ...

  7. 变身抓重点小能手:机器学习中的文本摘要入门指南 | 资源

    鱼羊 编译整理 量子位 出品 | 公众号 QbitAI 如果你是科研狗,一定有过被摘要支配的恐惧. 如果你想在浩如烟海的互联网信息里寻找重点,一定想要快速排除多余的内容. 基于机器学习的自动文本摘要工 ...

  8. Python使用标准库zipfile+re提取docx文档中超链接文本和链接地址

    推荐教材: <Python程序设计实用教程>,ISBN:978-7-5635-6065-3,董付国,北京邮电大学出版社 教材封面: 全国各地新华书店有售 京东购买链接: 配套资源:教学大纲 ...

  9. 微信小程序 实时搜索并高亮关键字

    微信小程序实现实时搜索并高亮关键字的功能效果 一.效果图 二.实现流程: 1.在文本框中输入关键字key,如"比赛",检索出比赛相关的列表 key = 小程序 2.处理结果列表:在 ...

最新文章

  1. 大道至简,回归到梦开始的地方。人生如此,编程亦如此。
  2. Linux块设备驱动总结
  3. centos7配置 console口_玩转KVM-一招打开vm的console口
  4. 2018~2019-11 20165107 网络对抗技术期末免考 Exp10 Final Powershell学习应用与渗透实践...
  5. linux命令实验设备,实验二 Linux系统的常用命令
  6. 计算机网络 --- 数据交换方式
  7. PyFlink + 区块链?揭秘行业领头企业 BTC.com 如何实现实时计算
  8. LVS Nginx 负载均衡区别
  9. 解决Mac文件乱码问题
  10. coolfire文章之七
  11. CE修改器教程总结1
  12. sas入门之(三)条件语句,循环语句,input语句
  13. facade模式 java_Java设计模式之外观模式(Facade模式)介绍
  14. Python读取视频方法
  15. python哥德巴赫猜想
  16. 展开式求和(c语言)
  17. 动态DNS的定义以及优缺点有哪些
  18. bootstrap table表格点击行checkbox勾选或取消勾选
  19. SmartForms 取消Word编辑器 恢复文本编辑器
  20. ROS2—服务(Service)

热门文章

  1. ajax webmethod,JQuery直接调用asp.net后台WebMethod方法
  2. 疯狂android源码中文乱码无gbk,我的Android进阶之旅------Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法...
  3. 数据结构与算法17-表插入排序
  4. 如何划分man文档的章节
  5. 浅谈Android软件安全自动化审计
  6. 游戏开发概要策划书的内容
  7. 知识图谱资源-NLP
  8. Mysql数据库大表归档操作
  9. jquery 里面对数组去重操作-unique
  10. 学习 WCF (4)--学会使用配置文件