【问题标题】:Javascript regex seems to add backslash to replacement [duplicate]Javascript正则表达式似乎在替换中添加了反斜杠[重复]
【发布时间】:2020-10-07 17:57:06
【问题描述】:

我有一个名为note_texttextearea,一个名为note_previewdiv 和这个函数:

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>

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

【问题讨论】:

  • 可能是因为你正在序列化一个字符串,而你不能在一个字符串中开始另一个字符串?
  • 你能帮我解决它吗?我不明白为什么重音不被视为常规字符。

标签: javascript html regex


【解决方案1】:

当您从输入中获得价值时,它会在您的情况下转义特殊字符 /,这就是您的 note_text.value"\\(a *b* c\\)" 的原因。尝试添加额外的反斜杠以转义到您的 RegExp 函数

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

【讨论】:

  • 谢谢,我忘记了 Javascript 对字符串中的字符进行了转义。 '\\\\\\((.*?)\\\\\\)' 解决了我的问题。
  • 没问题。如果有帮助,您可以将该答案标记为已接受)
  • 不需要其他答案了,已经是172nd post 同一个话题了。请考虑将其删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 2010-11-01
  • 2017-07-10
相关资源
最近更新 更多