正则匹配替换问题

var str="测试~![闭嘴][憨笑]";需要将内容中的带[]中的字符串全部替换为:文字:的这种格式。实现效果为
var str="测试~!:闭嘴::憨笑:";有大神指点下么 感谢
其实是处理后端传过来的中文表情转化成可解析的图片表情的 感谢大家的答案 非常有帮助

阅读 3.2k
5 个回答

不知道你对文字的定义是什么,姑且当成是非空且不含[]字符的任意字符吧。
只匹配成对的[],不匹配单独字符或者中间没有文字的配对。

"测试~![闭嘴][憨笑]][]".replace(/\[([^\[\]]+)\]/g,':$1:')
// result:
// "测试~!:闭嘴::憨笑:][]"

哪里有 [文字] ?

"测试~![闭嘴][憨笑]".replace(/[\[\]]/g,':')
"测试~闭嘴".replace(/[[\u4e00-\u9fa5]+/g,":$&:")

":测试:~:闭嘴:"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题