2016-05-12 63 views
0

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

enter image description here

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

任何想法可以帮助解决我的问题?

+0

尝试'.replace(/ \^^(\ d +)/ g,'$ 1')'。您是否还需要以特定方式管理这些值的空白? –

+0

没有它足够..我得到了我的答案感谢您的帮助。 – prasanth

+0

如果我可以在同样的单一正则表达式中应用这样的双重标记功能: - '“^”替换为$ 1'和'“⌄”替换为 1 $ '。我该怎么办?请告诉我如何修改代码? – prasanth

回答

2

我认为你正在寻找的东西像

\^(\d+) 

它匹配的^,捕获指数与

<sup>$1</sup> 

See it here at regex101更换。

编辑:

为了满足新的需求,检查this fiddle。它使用替换函数处理sub

+0

感谢您的正确答案。 – prasanth

+0

不客气。请将其标记为已接受。 – ClasG

+0

非常感谢。清晰简单的代码。并且也实现了我的期望。 – prasanth

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>

+0

谢谢迈克尔。如果我可以在同样的单一正则表达式中使用双标签功能,如下所示: - '“^”替换为$ 1'和'“⌄”替换为 1 $ '。我该怎么办?请告诉我如何修改代码? – prasanth

+0

嗯......花括号部分是什么?那有什么必要? – ClasG

+0

no.its不必要。你能帮我吗? – prasanth

相关问题