2011-09-17 10 views
1

私はこの正規表現を科学的表記法とC#のREGEXクラスに設定するために使用しています。C#でこの科学的表記法はどのように正規表現になりますか?

[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? 

しかし実際には機能しません。

+1

をあなたはそれを一致させたいんでしょうか? –

+0

-4.70e + 9、-.2E-4、0.2e4 – Darf

+0

のような科学的表記法これは私のためにexpressoで動作します –

答えて

5

そう簡単です代替:

double.TryParse(stringInput, out doubleOutput); 

Double.TryParseは、デフォルトでは、科学的表記法を扱います。

+0

+1。文字列入力= "0.2e"; ダブル出力。 Console.WriteLine(double.TryParse(入力、出力)? "有効": "無効"); –

+0

+1ニース回答 –

2

何が問題なのですか?

私が見ている潜在的な問題は、先頭に0を付けて、10進数に0をつけることです。あなたがどちらか、両方、あるいはどちらも必要ないかどうかはわかりません。また、小数部分をオプションにする必要がありますが、小数点の存在に依存します。ここでは、私がお勧めしたいものです。

一致します
[-+]?(0?|[1-9][0-9]*)(\.[0-9]*[1-9])?([eE][-+]?(0|[1-9][0-9]*))? 

0 
0.1 
0.01 
1 
1.1 
1.01 
10 
10.1 
10.01 
1e1 
1 
1e0 
1E1 
1e10 

それは一致しません:

. 
01 
1.0 
1.10 
1e01 
関連する問題