项目地址 https://github.com/pandao/editor.md

问题

Editor.md中,如果要输出表情,我们只需要通过代码 :smiley: 就可以输出 :smiley:

如果我们通过代码块形式原样输出:smiley:,就会被强制解析成 :smiley:,这明显不是我们想要的。

通过查看editormd.js源码,可以看到emoji这块的解析正则是这样写的:

  1. editormd.regexs = {
  2. emoji : /:([\w\+-]+):/g
  3. }

这样问题就来了,意思就是页面所有被 : :包含的元素都会被解析成 emoji 符号。

解决办法

1丶 第一步

editormd.js中搜索editormd.regexs,修改emoji如下:

  1. editormd.regexs = {
  2. emoji : /(?!(<code>).):([\w\+-]+):(?!(<\/code>))/g
  3. }

2丶 第二步

editormd.js中搜索text = text.replace(new RegExp(matchs[i]),大概在3434行。

  1. text = text.replace(new RegExp(matchs[i]), function($1, $2){

修改为

  1. text = text.replace(emojiReg, function($1, $2){

这样就可以实现在编辑器里面原样输出代码块语法了,其他标签强制解析解决方法和这类似。

由于Editor.md项目目前停止维护了,大家可以看我提交的 PR