質問編集履歴

4

今回の質問用正規表現の\\\^を削除しました。

2017/02/21 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -70,6 +70,8 @@
70
70
 
71
71
  ```
72
72
 
73
- /^([+-]?((-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[][+\-]?\d+)?)|\s*\((?1)+\)|\((?1)+\))(?:[\/*\^\+-](?1))?)+$/
73
+ /^([+-]?((-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[][+\-]?\d+)?)|\s*\((?1)+\)|\((?1)+\))(?:[\/*\+-](?1))?)+$/
74
74
 
75
75
  ```
76
+
77
+ **'\^'を削除しました。

3

追記

2017/02/21 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -35,3 +35,41 @@
35
35
  あたりがあるのではないかと思うのですが、良い方法があれば教えてください。
36
36
 
37
37
  よろしくお願いします。
38
+
39
+
40
+
41
+ # 追記
42
+
43
+ [eval-PHP](http://php.net/manual/ja/function.eval.php)に数式を正規表現で拾う以下の投稿を見つけました。
44
+
45
+
46
+
47
+ ```php
48
+
49
+ $number = '(-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)'; // What is a number
50
+
51
+
52
+
53
+ $functions = '(?:abs|atan|ceil|cos|exp|gmp_fact|intval|log(10)?|rand|round|sin|sqrt|tan)'; // Allowed PHP functions
54
+
55
+ $operators = '[\/*\^\+-]'; // Allowed math operators
56
+
57
+ $regexp = '/^([+-]?('.$number.'|'.$functions.'\s*\((?1)+\)|\((?1)+\))(?:'.$operators.'(?1))?)+$/';
58
+
59
+ ```
60
+
61
+ 結果としては以下となるので、これを加工するのが定石になるんでしょうか?
62
+
63
+ ```
64
+
65
+ /^([+-]?((-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)|(?:abs|atan|ceil|cos|exp|gmp_fact|intval|log(10)?|rand|round|sin|sqrt|tan)\s*\((?1)+\)|\((?1)+\))(?:[\/*\^\+-](?1))?)+$/
66
+
67
+ ```
68
+
69
+ 今回だとこんな感じ?
70
+
71
+ ```
72
+
73
+ /^([+-]?((-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[][+\-]?\d+)?)|\s*\((?1)+\)|\((?1)+\))(?:[\/*\^\+-](?1))?)+$/
74
+
75
+ ```

2

修正

2017/02/21 06:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- 変数に入った数式の結果を得る方法を探している中で、`eval` の使用を回避するようにというアドバイスを幾つかの記事確認しました。
23
+ 変数に入った数式の結果を得る方法を探している中で、`eval` の使用を回避するようにというアドバイスを幾つかの記事確認しました。
24
24
 
25
25
 
26
26
 

1

誤字修正

2017/02/20 13:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- 変数に入った数式の結果を得る方法を探している中で、`eval` の使用を回避するようにするアドバイスを幾つかの記事を確認しました。
23
+ 変数に入った数式の結果を得る方法を探している中で、`eval` の使用を回避するようにというアドバイスを幾つかの記事を確認しました。
24
24
 
25
25
 
26
26