当前位置: 首页 > 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.lryc.cn/news/598731.html

相关文章:

  • JMeter 性能测试实战笔记
  • 云端哨兵的智慧觉醒:Deepoc具身智能如何重塑工业无人机的“火眼金睛”
  • 无人机正摄影像自动识别与矢量提取系统
  • 无人机保养指南
  • 无人机速度模块技术要点分析
  • 04.建造者模式的终极手册:从快餐定制到航天飞船的组装哲学
  • (LeetCode 面试经典 150 题) 56. 合并区间 (排序)
  • Flutter 主流 UI 框架总结归纳
  • 让UV管理一切!!!
  • Django实时通信实战:WebSocket与ASGI全解析(上)
  • 使用钉钉开源api发送钉钉工作消息
  • kafka的shell操作
  • kafka消费者组消费进度(Lag)深入理解
  • 【阿里云-ACP-1】疑难题解析
  • 力扣189:轮转数组
  • Linux基础服务(autofs和Samba)
  • 深圳三维扫描铸件形位公差尺寸测量3d偏差检测-中科米堆CASAIM
  • LeetCode 2322:从树中删除边的最小分数
  • Elasticsearch 的聚合(Aggregations)操作详解
  • multiprocessing 模块及其底层机制 spawn_main 在大模型应用中的场景
  • STM32-FSMC
  • multiprocessing模块使用方法(一)
  • S7-1500 与 ET200MP 的组态控制通信(Configuration Control)功能实现详解(上)
  • 设备虚拟化技术IRF
  • 力扣刷题(第九十七天)
  • 智慧驾驶疲劳检测算法的实时性优化
  • 「Linux命令基础」用户和用户组实训
  • 雷达使用的MSOP端口和DIFOP端口是什么意思
  • Spring-狂神说
  • Claude4、GPT4、Kimi K2、Gemini2.5、DeepSeek R1、Code Llama等2025主流AI编程大模型多维度对比分析报告