用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>

浏览器显示效果:


相关文章
|
2月前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
53 1
|
12天前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
42 2
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
28天前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
23 2
|
1月前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
46 3
|
1月前
|
JavaScript
JS鼠标框选并删除HTML源码
这是一个js鼠标框选效果,可实现鼠标右击出现框选效果的功能。右击鼠标可拖拽框选元素,向下拖拽可实现删除效果,简单实用,欢迎下载
42 4
|
1月前
|
移动开发 HTML5
html5+three.js公路开车小游戏源码
html5公路开车小游戏是一款html5基于three.js制作的汽车开车小游戏源代码,在公路上开车网页小游戏源代码。
57 0
html5+three.js公路开车小游戏源码
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
110 6
|
2月前
|
JavaScript
HTML DOM 节点树
HTML DOM 节点是指在 HTML 文档对象模型中,文档中的所有内容都被视为节点。整个文档是一个文档节点,每个 HTML 元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。DOM 将文档表示为节点树,节点之间有父子和同胞关系。
|
2月前
|
JavaScript
HTML DOM 节点
HTML DOM(文档对象模型)将HTML文档视为节点树,其中每个部分都是节点:文档本身是文档节点,HTML元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。节点间存在父子及同胞关系,形成层次结构。