我有一个包含多项式表示的字符串。下面给出一些例子:
'1+3x'
'3y+1'
'-2+50x1'
'50x+31x^2-29'
'3.85x^3-2000'
`5x^2+2x+3`
很少有事情需要注意:
x
或x1
)33x^2+x-10.3
或33x^2+1
)我想将每个术语拆分为不同的数组元素。
'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中match()
对象的String
方法。
这是我到目前为止所尝试的: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']
我目前的解决方案中缺少什么?
答案 0 :(得分:2)
您可以将其简化为非+/-:.[^+-]*
答案 1 :(得分:1)
试试这个:polynomial.match(/(\+|\-)?[a-z0-9.^]+/gi);
我希望它对你有用