0

ユーザーが MVC4 を使用してテキスト ボックスにピリオド (".") を入力していないことを確認する必要があるという現在の要件があります。

したがって、これは許可されるべきです: 30
しかし、これは許可されるべきではありません: 30.2

RegularExpression 属性を使用しようとしていますが、機能する組み合わせが見つかりません。

public class StudyRandomizationCap
{
    [Range(1, 100, ErrorMessage = "Milestone must be between 1 and 100.")]
    [RegularExpression(@"\.", ErrorMessage = "Milestone percentage values cannot contain decimals.")]
    public short? MilestonePercentage1 { get; set; }
}

これは、小数点があるかどうかに関係なく、入力した数値のクライアント側での検証に失敗します。

これを次のように変更します:
[RegularExpression(@"[^.]", ErrorMessage = "マイルストーンのパーセンテージ値に小数を含めることはできません。")]

1 から 9 までの単一の数字を許可しますが、数字が 10 以上になると失敗します。繰り返しますが、これはすべてクライアント側にあります。

使用している正規表現に応じて、1 ~ 100 の数字で失敗するのはなぜですか? 正規表現を使用するよりもこれを行うためのより良い/簡単な方法はありますか? Javascript が ModelBinder とは異なる正規表現を実行する方法に何らかの制限はありますか?

これはかなり単純で些細なチェックのように思えます。私にとって、正規表現チェックは「.」がある場合にのみ失敗するはずです。テキストボックスで。

4

1 に答える 1

1

あなたの正規表現は 1 つの文字にのみ一致します。次のように、さらに一致できるように指示する必要があります。

[RegularExpression(@"[^\.]+", ErrorMessage = "Milestone percentage values cannot contain decimals.")]

+ は、1 文字以上の長さでなければならないことを意味します。数字だけが必要な場合にすべきことは、次のようなものを用意することです

[RegularExpression(@"[0-9]+", ErrorMessage = "Milestone percentage values cannot contain decimals.")]

最初のクエリでは、. ただし、記号や Az などの他の文字を入力することはできます

于 2013-04-11T12:28:15.090 に答える