如何使用RegularExpression属性禁用MVC TextBox中的句点

时间:2013-04-11 12:22:22

标签: regex asp.net-mvc-4

我有一个当前要求,我需要确保用户没有使用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不同的正则表达式有什么限制吗?

这似乎是一个相当简单和微不足道的检查,对我来说,正则表达式检查应该只有失败,如果有一个"。"在文本框中。

1 个答案:

答案 0 :(得分:1)

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

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

+表示长度必须为1个或更多字符。如果你只想要数字,你应该做什么就是

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

您的初始查询会阻止他们输入。但他们仍然可以输入其他字符,如符号或A-z