2011-07-14 6 views
0

正規表現と任意の数字を一致させたい。私は、この式(読みやすくするために追加の空白を)書かれている:正規表現が数字とe +またはe-と一致しない

(([0-9]+(\.[0-9]*)?) | (\.[0-9]+))((e|E)(\+|\-)[0-9](\.[0-9])?)? 

これは、次のいずれかの形式で任意の数と一致する必要があります:

  • 12345
  • 12.345
  • .12345
  • 12345.
  • 12e-345または12E-345
  • 12e+345または

それは最初の4つの表記と一致し12E+345が、最後の4(E-およびE +を持つもの)がありません。私は何を間違えたのですか?前もって感謝します。

+1

は、読みやすくするために空白を追加するも、物事を壊すされている場合があります空白を隠します。 – geoffspear

+0

@Wooble実際の式には空白がありません。 –

答えて

3

集中する:

(e|E)(\+|\-)[0-9](\.[0-9])? 

あなただけ桁e|Eた後、必要に応じて.と1他の数字が続くことが可能です。

+0

これは本当に問題です。それに気付かなかった。ありがとう! –

1

おそらく、最終的なスラッシュドット '\。'です。

また、*は存在しませんので、指数に1桁または2桁の数字しか使用できません。

(\.[0-9])?)? 
1

あなたは[eE]の後に1桁を探しています。変更 ?式のその部分に+

(([0-9]+(\.[0-9]*)?) | (\.[0-9]+))((e|E)(\+|\-)[0-9]+(\.[0-9])+)? 
0

これを使用します:\d+[eE][+-]\d+|\d+\.?\d*|\.\d+

関連する問題