4

数学演算子で数学文字列を分割しようとしています。例えば

expression = "7*6+3/2-5*6+(7-2)*5"

トークン化して生成する必要があります:

expressionArray = ["7","*","6","+","3","/","2","-","5","*","6"]

ここで解決策を見つけようとしましたが、これが得られたものです

expressoinArray=expression.split("(?<=[-+*/])|(?=[-+*/]")

しかし、これは の目的の結果を取得していないようですexpression

4

3 に答える 3

7

編集:

filter()これは受け入れられた回答のように機能し、おまけとしてIE8以下で失敗することはありません:

var expression = "7.2*6+3/2-5*6+(7-2)*5";
var splitUp = expression.match(/[^\d()]+|[\d.]+/g);
document.body.innerHTML = splitUp;

http://jsfiddle.net/smAPk/

于 2013-06-11T18:27:01.443 に答える
1

まず、正規表現を使用する場合split()は、最初に作成する必要があります。

var expr = new RegExp("(?<=[-+*/])|(?=[-+*/])")  
// note: you missed a ) at the end

残念ながら、ほとんどのブラウザーの RegExp エンジンは後読みをサポートしていないため、いずれにしても機能しません。これをループで行う必要があります。

于 2013-06-11T19:01:37.803 に答える