为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式提取文字内容中的聊天表情

正则表达式提取文字内容中的聊天表情

拉风的咖菲猫 2018-12-13 14:15:34
最近做聊天室项目需要把用户输入的文本内容转换为图片表情例如:'你好[hehe],试试' => 你好<img src="hehe.png">,试试[hehe]这种格式的就是一个表情,需要替换成图片由于模块化和安全考虑,不能直接把出现的位置直接替换成html,需要返回一个数组,text、img按照顺序排列,自己用正则处理的,尽管能实现,但是个人不太满意:'[ss]s[sdd][sdf]sd'.split(/(?=\[[A-Za-z\u4E00-\u9FA5\uF900-\uFA2D]+?])/).reduce(function (prev, curr) {  let index = curr.indexOf(']')  let first = curr.substr(0, index + 1)  let last = curr.substr(index + 1)  return prev.concat([first, last])}, [])// ["[ss]", "s", "[sdd]", "", "[sdf]", "sd"]有没有做过类似需求的正则大佬?
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

关于split一个不为人知的地方:


匹配的正则中的捕获分组会被添加到结果中!

'[ss]s[sdd][sdf]sd'.split(/(\[[^[\]]+\])/)

// 搞定!=> ["", "[ss]", "s", "[sdd]", "", "[sdf]", "sd"]


查看完整回答
反对 回复 2019-01-23
  • 1 回答
  • 0 关注
  • 525 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信