使用正则表达式转换 JS 中的多项式字符串表示

Convert Polynomial string representation in JS using Regular Expressions

我有一个包含多项式表示的字符串。下面给出了一些示例:

'1+3x'
'3y+1'
'-2+50x1'
'50x+31x^2-29'
'3.85x^3-2000'
`5x^2+2x+3`

需要注意的几点:

我想将每个术语拆分为不同的数组元素。

'1+3x' // => ['1', '+3x']
'3y+1' // => ['3y', '+1']
'-2+50x1' // => ['-2', '+50x1']
'50x+31x^2-29' // => ['50x', '+31x^2', '-29']
'3.85x^3-2000' // => ['3.85x^3', '-2000']
'5x^2+2x+3' // => ['5x^2', '+2x', '+3']

为了满足上述需求,我在JS中使用了String对象的match()方法。

这是我目前尝试过的方法:polynomial.match(/[a-z0-9.^]+(\+|\-)?/gi);

但我得到的输出与我想要的略有不同。

'1+3x' // => ['1+', '3x']
'3y+1' // => ['3y+', '1']
'-2+50x1' // => ['2+', '50x1']
'50x+31x^2-29' // => ['50x+', '31x^2-', '29']
'3.85x^3-2000' // => ['3.85x^3-', '2000']
'5x^2+2x+3' // => ['5x^2+', '2x+', '3']

我目前的解决方案遗漏了什么?

试试这个:polynomial.match(/(\+|\-)?[a-z0-9.^]+/gi); 希望对你有用

您可以将其简化为任何后跟非 +/- 的内容:.[^+-]*