2011-09-16 10 views
1

0〜99999の数字を含む文字列に正規表現を加え、その後にプラス記号、1〜2桁、オプションで続けて10進数と1桁の数字です。例えば:正符号と小数を含む正規表現

99999+99.9 

これも有効になります:

0+00 

これも有効になります:

0+02.5 

これも有効になります:

0+2.5 

私はこのトピックを発見:How can I check for a plus sign using regular expressions?

そして、この1: Regular Expression for decimal numbers

しかし、一緒に2を入れて、上記の他の要件を満たすことができません。

ご提供いただけるご支援は大変ありがとうございます。これは動作するはず

+0

'000 + 12.5 'のようなゼロパッドの数字は有効でしょうか? – BoltClock

+0

はい、ゼロ詰めは正常です –

答えて

4

\d{1,5}\+\d{1,2}(?:\.\d)? 
  1. \d{1,5}は、例えば、0〜99999の間で何かをキャプチャするだけでなく、ゼロパディングを可能に00000または00123(ゼロ埋め込みをしたくない場合は少し複雑になります)。

  2. \+は、プラス記号に一致します。

  3. \d{1,2}は、1桁または2桁に一致します。

  4. (?:\.\d)は、ピリオドと1桁の数字が一致します。 (?:)ビットは、非キャプチャグループを示します。

  5. 最後に?は、非捕捉グループを任意にします。

+0

これは唯一の問題は数値以外の文字も許可することです。 (99b99 + 99.9は「b」のために有効ではありません)。 –

0

ここでは

"^[0-9]*([0-9]{0,5}\+[0-9]{1,2}(\.[0-9])?)[0-9]*$" 

EDITです:あなたはコメント通り、私は表現を変更しています。

+0

私は私の質問ではっきりしていたはずです。数字以外の文字は有効ではありません。 –

+0

あなたが提案した解決策では、数字以外の文字は使用できませんが、プラス記号の左側に5文字以上入力することができます。プラス記号の左側に最大5文字を適用する方法はありますか? –

+0

実際にはプラス記号の左側に5文字、プラス記号の右側に2文字、10進数の右側に2文字(10進数が指定されている場合)は適用されません。 –

0

あなたはプラスとエスケープする必要があります。 - ように

\d{1,5}\+\d{1,2}\.?\d 

Hth!

関連する問題