用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号

简介: 用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号

需要将字符串

为中华崛起而写代码,此刻我想要高亮两个字“中国”<加油!>,但是“中国”后面的箭头<需要继续显示>

中的

中国

高亮加粗显示,但是又不想把< >符号误认为html节点标签渲染出来,代码如下,主要是用

.replace(/\ /g, " ").replace(/</g, "<").replace(/>/g, ">");

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>高亮显示搜索出来的文本</title>
    <style>
        .sg-search-word-highlight {
            display: inline-block;
            font-weight: bold;
            box-sizing: border-box;
            padding: 0 5px;
            border-radius: 4px;
            border: 2px solid white;
            box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
            color: white;
            background-color: #F56C6C;
        }
    </style>
</head>
<body>
<div class="p1"></div>
<div class="p2"></div>
</body>
<script>
    let replaceHTMLChar = s => s.toString().replace(/\ /g, "&nbsp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
 
    let highLightMatchString = (originStr, matchStr, customClass = "") => {
        customClass === true && (customClass = "sg-search-word-highlight");
        matchStr && (matchStr = matchStr.replace(/\(/g, "\\(").replace(/\)/g, "\\)").replace(/\[/g, "\\[").replace(/\]/g, "\\]"));//避免括号被误认为是正则表达式的一部分
        let newRepStr = customClass ? `<span class=${customClass}>${replaceHTMLChar(matchStr)}</span>` : `<b style='color:red;font-weight:bold;'>${replaceHTMLChar(matchStr)}</b>`;
        return replaceHTMLChar(originStr).replace(new RegExp(replaceHTMLChar(matchStr), "gi"), newRepStr);
    };
 
    //测试----------------------------------------
    document.querySelector(".p1").innerHTML = highLightMatchString("为中华崛起而写代码,此刻我想要高亮两个字“中国”<加油!>,但是“中国”后面的箭头<需要继续显示>", "中国");
 
    document.querySelector(".p2").innerHTML = highLightMatchString("为中华崛起而写代码,此刻我想要高亮两个字“中国”<加油!>,但是“中国”后面的箭头<需要继续显示>", "中国", true);
 
</script>
</body>
</html>

浏览器显示效果:


相关文章
|
5天前
|
JavaScript 搜索推荐 UED
一种将 Vue 组件渲染为 HTML 字符串的技术
Vue 的服务器端渲染(SSR)技术在服务器上将组件渲染为 HTML,提升首屏加载速度和 SEO。优点包括更快的用户体验、更好的搜索引擎优化及减轻客户端负担。然而,SSR也带来服务器压力增大、开发复杂性和额外的构建配置需求。vue-server-renderer 包支持 Vue SSR,但是否采用取决于项目需求和资源。
11 1
|
13天前
|
前端开发 开发者
在HTML中,可以使用字符实体`&copy;`来显示版权符号
【4月更文挑战第30天】在HTML中,可以使用字符实体`&copy;`来显示版权符号
16 2
|
13天前
|
JavaScript 前端开发
JavaScript DOM 文档对象模型(获取、改变html元素)
JavaScript DOM 文档对象模型(获取、改变html元素)
|
14天前
|
前端开发 JavaScript
使用html+css+javaScript 完成计算器
使用html+css+javaScript 完成计算器
|
17天前
|
前端开发 JavaScript
前端 富文本编辑器原理——从javascript、html、css开始入门(二)
前端 富文本编辑器原理——从javascript、html、css开始入门
28 0
前端 富文本编辑器原理——从javascript、html、css开始入门(二)
|
17天前
|
前端开发 JavaScript 索引
前端 富文本编辑器原理——从javascript、html、css开始入门(一)
前端 富文本编辑器原理——从javascript、html、css开始入门
36 0
|
20天前
|
Python
python html(文件/url/html字符串)转pdf
python html(文件/url/html字符串)转pdf
10 0
|
20天前
|
JavaScript 前端开发 索引
JavaScript中的正则表达式:使用与模式匹配
【4月更文挑战第22天】本文介绍了JavaScript中的正则表达式及其模式匹配,包括字面量和构造函数定义方式,以及`test()`、`match()`、`search()`和`replace()`等匹配方法。正则表达式由元字符(如`.`、`*`、`[]`)和标志(如`g`、`i`)组成,用于定义搜索模式。文中还分享了正则使用的技巧,如模式分解、非捕获分组和注释。掌握正则表达式能提升文本处理的效率和代码质量。
|
24天前
|
前端开发 JavaScript
在HTML中,我们可以使用JavaScript变量
【4月更文挑战第19天】在HTML中,我们可以使用JavaScript变量
16 2
|
24天前
|
JavaScript 前端开发
在JavaScript中怎样获取或修改HTML元素。
在JavaScript中怎样获取或修改HTML元素。