我有一个文字等式:10x^2-8y^2-7k^4=0
。
如何找到^
并使用正则表达式将整个字符串中的<sup>2</sup>
替换为str = str.replace(/\^\s/g, "<sup>$1</sup> ")
。结果应该是:
我尝试id
,但我没有得到预期的结果。
任何有助于解决我的问题的想法?
答案 0 :(得分:2)
答案 1 :(得分:1)
您当前的模式与插入符号后跟空格字符(空格,制表符,换行符等)匹配,但您希望匹配插入符后跟单个字符或多个字符包含在赞誉中,因为您的字符串是在TeX。
/\^(?:([\w\d])|\{([\w\d]{2,})\})/g
现在,使用str = str.replace(/\^(?:([\w\d])|\{([\w\d]{2,})\})/g, "<sup>$1</sup>");
可以胜任。
您可以使用此表达式创建一个更通用的函数,该函数可以包含带有特定标记的特定字符前缀的字符。
function wrapPrefixed(string, prefix, tagName) {
return string.replace(new RegExp("\\" + prefix + "(?:([\\w\\d])|\\{([\\w\\d]{2,})\\})"), "<" + tagname + ">$1</" + tagname + ">");
}
例如,调用wrapPrefixed("1_2 + 4_{3+2}", "_", "sub");
会产生1<sub>2</sub> + 4<sub>3+2</sub>
。