quill 实现代码高亮

发布于 2022-09-12 13:25:45 字数 1765 浏览 18 评论 0

代码

    let start = `((\\\\)(?:usepackage|documentclass))(?:(\\[)([^\\]]*)(\\]))?(\\{)`;
    let end = `\\}`;


    let reg = new RegExp(`${start}`, 'gi');


    let str = `
        %导言区
        \\documentclass[UTF8]{ctexart}
        \\usepackage{marginnote}
        %正文区 begin
        \\begin{document}
        \\marginpar[left]{这是边柱}
            这里是一段难懂的命令\\marginnote{这是一段解释的文字。}。
        %正文区 end
        \\end{document}
    `;


    let arr = reg.exec(str);

    console.log('arr', arr);

    let str2 = str.replace(reg, `这是开始$2这是结束`);

    console.log('str2', str2);

这是利用正则对一段代码进行匹配关键词。

运行如下:

arr [
  '\\documentclass[UTF8]{',
  '\\documentclass',
  '\\',
  '[',
  'UTF8',
  ']',
  '{',
  index: 22,
  input: '\n' +
    '        %导言区\n' +
    '        \\documentclass[UTF8]{ctexart}\n' +
    '        \\usepackage{marginnote}\n' +
    '        %正文区 begin\n' +
    '        \\begin{document}\n' +
    '        \\marginpar[left]{这是边柱}\n' +
    '            这里是一段难懂的命令\\marginnote{这是一段解释的文字。}。\n' +
    '        %正文区 end\n' +
    '        \\end{document}\n' +
    '    ',
  groups: undefined
]
str2 
        %导言区
        这是开始\这是结束ctexart}
        这是开始\这是结束marginnote}
        %正文区 begin
        \begin{document}
        \marginpar[left]{这是边柱}
            这里是一段难懂的命令\marginnote{这是一段解释的文字。}。
        %正文区 end
        \end{document}

这个正则是从atom的源码文件里面复制的,atom这种编辑器,实现代码高亮一般都是通过正则 replace,直接替换成指定的span。

比如

<span class="keyword-1">这是关键词</span>

从而实现代码高亮

但是我现在用的是quill编辑器

他的接口是这样的

quill.formatText(0, 2, 'bold', true);

这段话的意思就是,指定范围从0到2,对这段范围的文字加粗。
但是如果我想实现高亮,我必须知道,这个关键词的起点,才行。
有什么思路吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文