使用正则表达式查找单词并替换为 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>
编辑:
要满足您的新需求,请检查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>
。
我有一个文本等式:10x^2-8y^2-7k^4=0
。
如何使用正则表达式在整个字符串中找到 ^
并将其替换为 <sup>2</sup>
。结果应该是这样的:
我尝试了 str = str.replace(/\^\s/g, "<sup></sup> ")
,但没有得到预期的结果。
有什么想法可以帮助解决我的问题吗?
我想你正在寻找类似
的东西\^(\d+)
它匹配^
,捕获指数并替换为
<sup></sup>
编辑:
要满足您的新需求,请检查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>
。