多項式表現を含む文字列があります。いくつかの例を怒鳴る与えられている:正規表現を使用してJSの多項式文字列表現を変換する
'1+3x'
'3y+1'
'-2+50x1'
'50x+31x^2-29'
'3.85x^3-2000'
`5x^2+2x+3`
いくつかのことを気づか:
- 用語は、特定の順序を含んでいません。
- 不確定性は1つしかなく、小文字の後に数字が続く場合もあります。 (例えば、
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で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); '? –