1
関数validateDecimal(number、maxDigits)
{{
    eval( "var stringvar = / ^ [-+]?([0-9] *\。[0-9]{0、" + maxDigits + "})|([0-9] +)$ /");

    stringvar.test(number);を返します。
}

10進数を検証するために上記の関数を作成しました。変数「maxDigits」は、小数部の桁数を指定するために使用し、「number」は検証する値として使用します。しかし、数値の後に文字を続けて試してみると、「true」が返されました(例:24y)。誰かが私の間違いを理解するのを手伝ってくれますか?

4

3 に答える 3

3

正規表現に入らずに、コードの問題は、特殊文字を2回エスケープする必要があることだと思います。すべてを文字列内に配置しているため、文字列の解析によって1つの円記号がエスケープされます。

私はこれがうまくいくと思います:

eval("var stringvar=/^[-+]?([0-9]*\\.[0-9]{0,"+maxDigits+"})|([0-9]+)$/");
于 2012-08-10T06:09:11.047 に答える
0

私はこれを試したところ、うまくいきました:^[+-]?[0-9]*(\.[0-9]{0,5})?$

私の場合、小さな変更を加えましたが、10進数または整数のいずれかと一致しているようです。私の場合、正規表現を変更して、オプションの小数セクションを含む整数を取得しました。

現状では、正規表現は次のような値に一致しますが、、などには一致.222しませ23.22222ん。4d.2222233.333333

var n1 = "4.33254";
var n2 = "4d.55";

eval("var stringvar=/^[+-]?[0-9]*(\\.[0-9]{0,5})?$/");
alert(stringvar.test(n1));
alert(stringvar.test(n2));

収量:trueおよびfalseそれぞれ。

于 2012-08-10T06:04:23.963 に答える
0

この正規表現は、小数点以下のmaxDigitsを持つ数値を検証します ^[-+]?[0-9]*.[0-9]{10}$。これにより、小数点以下10桁まで検証されます。

これをJavaScriptに実装すると、次のようになります eval("var stringvar=^[-+]?[0-9]*.[0-9]{" + maxDigits + "}$");

于 2012-08-10T06:05:58.407 に答える