2011-07-06 34 views
0

ユーザが負の値を入力できないようにする機能があります。誰もが、この仕事をするために、下の正規表現でどのような変更を加える必要があるか教えてください。正規表現で負の数を許可しない

function testAmount(obj){ 

var reg0Str = '^[0-9]*\\.?[0-9]{0,2}$'; 
var reg1Str = /(^\d{1,3}(,\d\d\d)*$)/; 
var temp = obj.value; 

var reg0 = new RegExp(reg0Str); 
var testFlag = reg0.test(remCommas(temp)); 
var testFlag0 = reg1Str.test(temp); 
if(!(testFlag||testFlag0)){ 
     alert("Please enter a valid Number"); 
    obj.focus; 
} 
    return testFlag; 
} 
+0

私の助言はあなたの仕事をすることを学ぶことです...いつか彼らはあなたに他の人のコードをリファクタリングするよう求めないでしょうし、あなたはあなたのことを書く必要があります。 – SJuan76

+0

はい、あなたは正しいですが、私はコードのこの部分が何をしたのか分かりませんでした...^[0-9] * \\。?[0-9] {0,2} $ – dazzle

答えて

4

数字だけの文字(およびドット)を使用できます。あなたの正規表現の先頭に\\-?を追加してください。

1

私は のこの部分のコードが何をしたかを理解didntの...^[0-9] * \。?[0-9] {0,2} $

^アンカー(代わりに、文字列のどこにでもマッチの)文字列の先頭に正規表現
[0-9]、数字のみである(スラッシュ内部または\ D)\ dと略記することができる
*は0倍以上に
\\.?手段と一致することを意味しますオプションのドット
[0-9]{0,2}文字列の末尾(試合後に何もない)

に0〜2桁
$アンカー正規表現を意味だから正確に高々2桁の数字が続き、オプションのドットが続くゼロ以上の数字です。空の文字列も同様に一致することに注意してください。

あなたの要求に関しては、Marasの答えが正しいです。

私はあなたが表示するコードの質に疑問を呈しますが、それは別の問題です(文字列と真の正規表現との違い、[0-9]と\ dなどの違いは人によって異なる)。

関連する問題