我很讨厌正则表达式,我一直在努力解决这个问题。问题是我有一个字符串,我想匹配任何前面没有“^”的“+”或“-”。
示例字符串:
100x^-3+2x-10
上面的字符串将在数学上格式化或读取为“x 的 100 次方 -3 次方,加上 x 的两倍,减去 10”。
我想匹配“2x”之前的“+”和“10”之前的“-”,而不是“100x^”之后的“-”。我希望它不会那么混乱。我尝试了以下注册,但没有运气:
[^\^][\+|\-]
显然我在某处遗漏了一个大细节。
我很讨厌正则表达式,我一直在努力解决这个问题。问题是我有一个字符串,我想匹配任何前面没有“^”的“+”或“-”。
示例字符串:
100x^-3+2x-10
上面的字符串将在数学上格式化或读取为“x 的 100 次方 -3 次方,加上 x 的两倍,减去 10”。
我想匹配“2x”之前的“+”和“10”之前的“-”,而不是“100x^”之后的“-”。我希望它不会那么混乱。我尝试了以下注册,但没有运气:
[^\^][\+|\-]
显然我在某处遗漏了一个大细节。
您可以使用通过反转字符串来模拟向后看的旧技巧,然后匹配/[\+\-](?!=\^)/
.
它在 chrome 控制台中运行正常,无论如何您可以尝试使用 : "100x^-3+2x-10".match(/[^\^$]([\-|\+])/ig)
,我建议您在 Google Chrome 的控制台中测试您的正则表达式。
如果您需要按+
or分割-
:
"100x^-3+2x-10".replace(/([^^])[-+]/g,'$1@').split('@')
Output: ["100x^-3", "2x", "10"]
我用作@
临时字符(但您可以使用一组唯一的字符)来标记没有前缀的符号,^
然后由所选临时字符安全分割。
试一试:
/(?<!\^)[+-]/