Javascript 正则表达式似乎在替换中添加了反斜杠

我有一个texteareacalled note_text,一个divcallednote_preview和这个函数:


function fence_math(text) {

    return text

        .replace(new RegExp('\\\((.*?)\\\)', 'g'), '`memviv-math $1`')

        .replace(new RegExp('\\\[(.*?)\\\]', 'g'), '`memviv-equation $1`');

}

如果我运行这个:


note_preview.innerHTML = fence_math(note_text.value);

当note_text包含


\(a *b* c\)

我得到


<div id="note_preview">\`memviv-math a *b* c\`</div>

为什么重音符号前有反斜杠?我会期望:


<div id="note_preview">`memviv-math a *b* c`</div>

我该怎么做才能得到正确的结果?


繁花不似锦
浏览 129回答 1
1回答

鸿蒙传说

当您从输入中获取价值时,它会/在您的情况下转义特殊字符,这就是为什么您note_text.value是"\\(a *b* c\\)".&nbsp;尝试添加额外的反斜杠以转义到您的 RegExp 函数.replace(new&nbsp;RegExp('\\\\((.*?)\\\\)',&nbsp;'g'),&nbsp;'`memviv-math&nbsp;$1`') .replace(new&nbsp;RegExp('\\\\[(.*?)\\\\]',&nbsp;'g'),&nbsp;'`memviv-equation&nbsp;$1`');
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript