2011-12-21 7 views
0

数字に表示する必要のある桁数はあらかじめ定義されていますが、入力番号を検証する正規表現/関数が必要です。javascriptを使用して特定の長さの10進数を検証するのに手助けが必要

例:

0.0  --true, 
0  -- true, 
000.0000 - true, 
0.2  --true, 
0.200 --true, 
1.2  -- true, 
0.22  -- true, 
0.02  -- true, 
.2  -- true, 
.99  -- true, 
12.21 -- true, 
0099.3200-- true, 
80.080 --true, 
80.80 --true, 
8.088 --false, 
09.9  --true, 
9.0  --true, 
5  --true, 
89  --true 
:長さは次のように可能にすべきである(0,2)、次いで数である場合:のように可能にしなければならない長さである場合

0.0  --true, 
0  -- true, 
000.0000 - true, 
0.2  --true, 
0.200 --true, 
1.2  -- false, 
0.22  -- true, 
0.02  -- true, 
.2  -- true, 
.99  -- true 

(2,2)、次いで数

など。任意のアイデア/提案/コード/ヘルプが評価されます。

ありがとうございました。一つの可能​​なアプローチの

+1

私は失敗状態を理解していません。失敗する例をさらに提示し、推論を説明してください。 – zzzzBov

+0

1> lengthが(0,2)の場合 - ここでは10進数の前に同じようにするべき値が0と10進の後に値の長さは2(右手の0を除く最大) – Bidesi

+0

2> lengthが、2)デシマの前の桁数は、左手0を除いて2になり、右手の0を除いて2進数になります。-ie:0022.2200は有効ですが、220.003は無効です – Bidesi

答えて

0

大筋:

  1. 検証データは、あなただけの数字とピリオドからなる数値、または文字列を使用して作業していることを確認します。
  2. 変数を文字列としてキャストする(x + 'は文字列としてxをキャストします)
  3. ピリオドで文字列を分割します。 (var配列= x.split( '。');
  4. 分割配列の長さが2より大きくないことを確認します(2より大きい場合は、文字列内に複数の。があります)
  5. それぞれをキャストします
  6. 4または6のテストでエラーが発生すると、その数値は失敗します(数字の半分は10^。そうでなければ、それは成功します。
+0

または十分に大きい数字指数表記を必要とするほど小さい – Pointy

+0

また、文字列への変換は暗黙のうちに先行ゼロまたは後続ゼロがなくても数値を表すので、おそらくそれだけです。 – Pointy

+0

末尾の0を小数部から削除する方法はありますか? – Bidesi

0

私は通常、このような何かのために正規表現を避けるためだろうが、次のようなパターンは、仕事ができる場所ab(a, b)から、次のとおりです。

/^0*[0-9]{0,a}(?:\.[0-9]{0,b}0*)?$/ 

内訳:

^ - beginning of string 
0* - zero or more zeros 
[0-9]{0,a} - 0 to a digits* 
(?: - start of a non-capturing container 
\. - a period character 
[0-9]{0,b} - 0 to b digits* 
0* - zero or more zeros 
)? - 0 or 1 of the non-capturing containers 
$ - end of the string 

*(\d[0-9]の代わりに使用することができるが、私は、変数として手紙を維持したい)

ます動的な数値が必要な場合は文字列からRegExを作成する必要がありますが、静的であればハードコードすることができます:

(2,2) 
/^0*[0-9]{0,2}(?:\.[0-9]{0,2}0*)?$/ 
+0

これは私がまさに望むものです..ありがとうzzzzBov – Bidesi

+0

Bidesi、あなたはそれを最高のものとしてマークしてください。 – jeremiahs

+0

「072」などの数値を変換する場合は、先頭の「0」のために8進数として解釈されるため、注意してください。 – zzzzBov

関連する問題