表情包实现

思路:通过全局正则针对文本内容走查,匹配到[嘿哈]文本表情包,通过创建div或者img标签,包裹将文本表情包替换成我们表情包的地址链接。

// 创建文件emoticon.js
import lottie from "lottie-web"; // 动画方法const emoticon = new Map([['[大笑]', {name: 'daxiao',src: 'https://url-daxiao.json' // 表情包地址}]]}// 根据资源文件生成正则匹配规则
const regExpFn = () => {let ruleStr = '';emoticon.forEach((val, key) => {const text = key.replace(/\[|\]/g, function (w: any): any {if (w === '[') {return '\\['} else if (w === ']') {return '\\]'}})ruleStr += text + '|'})ruleStr = ruleStr.substr(0, ruleStr.length - 1)return new RegExp(ruleStr, 'g')
}// 替换内容里的表情包
const emotiomReplace = (params = {}) => {const lottieWrap = {};const { content, id } = paramsconst result = content.replace(regExpFn(), (world, index) => {const type = world, lookId = id + '-' + index;if (lottieWrap[lookId]) return false;const div = document.getElementById(lookId)if (div && !div.innerHTML) {const path = emoticon.get(div.getAttribute('type')).srclottieWrap[lookId] = lottie.loadAnimation({container: div,renderer: 'svg',loop: true,path})}return `<div style="display: inline-block; width: 20px; height: 20px; margin: 0 1px; vertical-align: middle;" type="${type}" id="${lookId}"></div>`})return result;
}export {emotiomReplace
}
使用
import { emotiomReplace } from './emoticon.js'
<span v-html="emotiomReplace(后端数据)"></span>

前端js实现正则表情包内容替换相关推荐

  1. html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签

    js 如何正则匹配没有内容的空标签并移除掉? 例如 等等 正则 /]*?)?>\s*?/ig html=' '+ '\n '+ '\n'+ '\n '+ '\n '+ '\n '+ '\n'+ ...

  2. 猿人学题库十六题——js加密_表情包+sojson6.0——满天坑

    猿人学题库十六题--js加密_表情包+sojson6.0 1.  首先 进入 浏览器的开发者工具, 进去后首先还是 无线debug ,找到 debugg 对应的行数,右击选择 never pause ...

  3. 前端 js 邮箱正则判断 (支持多个邮箱判断)

    话不多说,上代码: var regEmail = /^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da ...

  4. js mysql替换_JavaScript_js使用正则实现ReplaceAll全部替换的方法,JS 字符串有replace() 方法。但这 - phpStudy...

    js使用正则实现ReplaceAll全部替换的方法 JS 字符串有replace() 方法.但这个方法只会对匹配到的第一个字串替换. 如下例: New Document var str = " ...

  5. 华为云 内容审核API调用 前端 js uni-app

    文章目录 前言 一.华为云的内容审核api的调用需要哪些东西? 二.使用步骤 1.先注册一个华为云的账号 2.申请内容审核服务 3.[华为云内容审核API的官方文档](https://support. ...

  6. 自己写个仿微博的表情包功能

    ** 自己写个仿微博的表情包功能 ** 前两天写微博系统尝试着写一个表情包系统如图所示: 主体思想是先把图片罗列出来,加上title和name属性,当点击图片时获取图片的name属性,附加在输入框文本 ...

  7. “一日不斗,我浑身难受”,表情包斗图成瘾下的大市场

    聊天无言对,斗图能长久.雪碧与阔乐,压惊必须有.暴漫蘑菇头,都没群主丑.真香奥利给,皮虾我们走.修仙入佛系,难逃单身狗.雪姨黄子韬,尔康张学友.心情不美丽,土拔鼠怒吼.没事斗斗图,结交好基友-- 网友 ...

  8. ps导出gif颜色不对_PS の手绘《超详细的动态表情包新手绘制指南》

    今年本命年想做个表情包,但是之前没有做过,在网上搜索教程时,没有找到很有用的.所以我大部分都是看很多喜欢的表情包,然后录屏逐帧来分析的. 在表情包做完后,想要做一个记录总结,分享给同样想做表情包的新手 ...

  9. python爬表情包_【从零开始写爬虫一】批量下载表情包

    序 打算写个关于node的爬虫菜鸟教程,接下来将带大家一步一步写一个表情包爬虫,从获取页面,解析表情包链接, 清洗脏数据,下载表情包到本地.开始之前你需要有对chrome调试工具和ES6有一定了解,包 ...

最新文章

  1. 谷歌chrome浏览器的源码分析(六)
  2. 基于Spring boot + Mybatis +Netty 实现前后端分离的聊天App,部署到阿里云线上服务器...
  3. SAP 既是供应商,又是客户-互清(清账 F110中使用)
  4. ANT简明教程[转载]
  5. bcp 不能调用where 子句_技术分享 || Mysql中IS NULL、IS NOT NULL不能走索引?
  6. Java编程中忽略这些细节,Bug肯定找上你
  7. android 跨进程 android:process,Android跨进程通信技术-多进程模式的运行机制
  8. context c语言作用,理解 Go context
  9. 常用的硬盘数据恢复软件Easyrecovery、Finaldata、DataExplore简介
  10. 云之家集成第三方应用
  11. #include和 #includefilename.h的区别
  12. 舵机工作原理及STM32驱动代码
  13. VS2010 C++ 操作Excel表格的编程实现(OLE/COM)
  14. 为不喝的朋友准备的!如何委婉地拒绝劝酒
  15. 技术人生:故事之八 OFFICE是软件打字机?
  16. DIY一个带WIFI的树莓派照相机
  17. epel yum 安装 trickle
  18. Oracle-存储过程语法
  19. 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言
  20. 树形结构的处理——组合模式(五)

热门文章

  1. c语言检测键盘有无输入函数,函数名:kbhit():检查当前是否有键盘输入
  2. 嵌入式基础测试手册——基于NXP iMX6ULL开发板(3)
  3. 电容式触摸芯片在电容式触摸按键中的应用
  4. 新一代烧写工具—STM32CubeProgrammer!
  5. 数据分析实例-平安银行股票分析
  6. macOS Final Cut Pro X 视频剪切 基本操作
  7. wps表格线怎么错开_wps表格图形怎么对齐网格线-wps表格图形对齐网格线的方法 - 河东软件园...
  8. 北科大计算机实践报告,计算机应用实践报告北科大.doc
  9. Python学习记录 私有属性和私有方法
  10. 不止于大西瓜,让你的 H5 小游戏一键“起飞”