1

我很讨厌正则表达式,我一直在努力解决这个问题。问题是我有一个字符串,我想匹配任何前面没有“^”的“+”或“-”。

示例字符串:

100x^-3+2x-10

上面的字符串将在数学上格式化或读取为“x 的 100 次方 -3 次方,加上 x 的两倍,减去 10”。

我想匹配“2x”之前的“+”和“10”之前的“-”,而不是“100x^”之后的“-”。我希望它不会那么混乱。我尝试了以下注册,但没有运气:

[^\^][\+|\-]

显然我在某处遗漏了一个大细节。

4

4 回答 4

0

您可以使用通过反转字符串来模拟向后看的旧技巧,然后匹配/[\+\-](?!=\^)/.

于 2013-03-17T00:05:10.273 回答
0

它在 chrome 控制台中运行正常,无论如何您可以尝试使用 : "100x^-3+2x-10".match(/[^\^$]([\-|\+])/ig),我建议您在 Google Chrome 的控制台中测试您的正则表达式。

于 2013-03-17T00:21:10.397 回答
0

如果您需要按+or分割-

"100x^-3+2x-10".replace(/([^^])[-+]/g,'$1@').split('@')
Output: ["100x^-3", "2x", "10"]

我用作@临时字符(但您可以使用一组唯一的字符)来标记没有前缀的符号,^然后由所选临时字符安全分割。

于 2013-03-17T00:41:31.447 回答
0

试一试:

/(?<!\^)[+-]/
于 2013-03-17T00:52:15.557 回答