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

您的正则表达式只匹配一个字符,您需要告诉它能够匹配更多,例如:

[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 回答