使用正则表达式查找单词并替换为 html 标签

Find the word and replace with html tag using regex

我有一个文本等式:10x^2-8y^2-7k^4=0。 如何使用正则表达式在整个字符串中找到 ^ 并将其替换为 <sup>2</sup> 。结果应该是这样的:

我尝试了 str = str.replace(/\^\s/g, "<sup></sup> "),但没有得到预期的结果。

有什么想法可以帮助解决我的问题吗?

我想你正在寻找类似

的东西
\^(\d+)

它匹配^,捕获指数并替换为

<sup></sup>

See it here at regex101.

编辑:

要满足您的新需求,请检查this fiddle。它也使用函数替换来处理 sub

您当前的模式匹配插入符号后跟 space 字符(space、制表符、换行符等),但您想要匹配插入符号后跟单个字符或多个字符包含在赞誉中,因为您的字符串在 TeX 中。

/\^(?:([\w\d])|\{([\w\d]{2,})\})/g

现在,使用 str = str.replace(/\^(?:([\w\d])|\{([\w\d]{2,})\})/g, "<sup></sup>"); 应该就可以了。


您可以从此表达式创建一个更通用的函数,该函数可以用特定标记包装以特定字符为前缀的字符。

function wrapPrefixed(string, prefix, tagName) {
    return string.replace(new RegExp("\" + prefix + "(?:([\w\d])|\{([\w\d]{2,})\})"), "<" + tagname + "></" + tagname + ">");
}

例如,调用 wrapPrefixed("1_2 + 4_{3+2}", "_", "sub"); 结果是 1<sub>2</sub> + 4<sub>3+2</sub>