当前位置: 首页 > news >正文

高亮标题里的某个关键字正则表达式

 

使用v-html渲染,写一个高亮方法

<span class="title-name" v-html="highlightKeywords(name, keywords)"></span>

 这里传入的name带了文件拓展名,所以先把名称从文件名里提取出来

// 高亮标题颜色highlightKeywords(name, keywords) {// 安全处理空值if (!name || typeof name !== 'string') return '';// 正则解释:// .*? 非贪婪匹配任意字符(尽可能少匹配)// (?=\.[^.]+$) 正向肯定预查:匹配后面紧跟着"点+扩展名"的位置const match = name.match(/.*?(?=\.[^.]+$)/);// 如果有匹配结果则返回,否则返回原名称(无扩展名的情况)const title = match ? match[0] : name;// console.log(title, '--title--')// console.log(match, '--match--')// 统一处理:将单个关键词转为数组,方便统一逻辑const keywordList = Array.isArray(keywords) ? keywords : [keywords];// 过滤空关键词const validKeywords = keywordList.filter(k => k && k.trim() !== '');if (validKeywords.length === 0) return title;// 构建正则表达式:匹配所有关键词(不区分大小写)// 转义特殊字符,避免正则语法错误const escapedKeywords = validKeywords.map(k => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') // 转义正则特殊字符);const regex = new RegExp(`(${escapedKeywords.join('|')})`, 'gi');// 替换匹配到的关键词,添加高亮样式return title.replace(regex, (match) => {return `<span style="color: blue">${match}</span>`;});},

http://www.dtcms.com/a/296041.html

相关文章:

  • c#正则表达式
  • Q2桥门式起重机司机主要应用在哪些行业
  • Etcd原理基础学习
  • Java基础day16-Vector类-Stack类-Collection子接口Set接口
  • 【CTF-WEB-SQL】SQL注入基本流程(sql-labs的Less1-4)(最简单数字型、字符型、括号型的注入查看username和password)
  • 高可用架构模式——异地多活设计步骤
  • pytest官方Tutorial所有示例详解(一)
  • SQL基础⑪ | 约束
  • HTML应用指南:利用GET请求获取全国奈雪的茶门店位置信息
  • 使用exceljs导出luckysheet表格 纯前端 支持离线使用
  • 深度分析Java虚拟机
  • pyarmor加密源代码
  • 「iOS」——RunLoop学习
  • Spring之SSM整合流程详解(Spring+SpringMVC+MyBatis)
  • 教务管理系统学排课教务系统模块设计
  • 使用全局变量访问 Qt UI 组件的方法文档
  • 人工智能时代数据“淘金”:Python数据预处理与特征工程十大技术要点解析
  • 物联网十大应用领域深度解析
  • 【水文水资源] SWAT、AquaCrop模型、HYPE、Aquatox、Delft3D、FVCOM、3s水文、
  • 从“耗电大户”到“节能先锋”:政策驱动下,智慧照明如何改写城市能源格局?
  • Visual Studio 2010-.Net Framework 4.0项目-NPOI安装
  • redis常用数据类型
  • golang 1.24在密码相关领域的改动
  • linux 应用层直接操作GPIO的方法
  • Java 异常处理:从理解到实践的全面指南
  • 项目部署卡脖子?EasyCVR视频汇聚平台5种部署方案适配百变监控需求
  • 线段树学习笔记 - 练习题(2)
  • 教程:如何通过代理服务在国内高效使用 Claude API 并集成到 VSCode
  • LeetCode 23:合并 K 个升序链表
  • QT框架,关于WebEngine打包