1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

javascriptにおける計算式(文字列)の計算

Posted at

はじめに

会社のシステム開発において文字列で入力した計算式を計算するというものを作成しているのですが、少し思い通りいかなかった部分を備忘録がてら記載しております。

内容

例えば、以下の文字列で構成された計算式を計算しようと思うとエラーが発生してしまいます。

var string = "1--1-+1+-1"
var result = Function('return ('+string+');')();
console.log(result);

これは、途中で -- を含んでいるため、これを置換すれば計算は通ります。

var string = "1--1-+1+-1".replace("--","+");
var result = Function('return ('+string+');')();
console.log(string);
console.log(result);
1+1-+1+-1
0

また、()の隣に演算子がない場合にもエラーになります。

var string = "1+2(1+2)(3+4)2+1";
var result = Function('return ('+string+');')();
console.log(result);

こちらも、掛け算をするよう文字を置換する必要があります(。

// 数字( → 数字*(、)数字 → )*数字、)( → )*()と変換
var string = "1+2(1+2)(3+4)2+1".replace(/(\d+)(\()/g,"$1*$2").replace(/(\))(\(|\d+)/g,"$1*$2");
var result = Function('return ('+string+');')();
console.log(string);
console.log(result);
1+2*(1+2)*(3+4)*2+1
86
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?