我有一个当前要求,我需要确保用户没有使用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不同的正则表达式有什么限制吗?
这似乎是一个相当简单和微不足道的检查,对我来说,正则表达式检查应该只有失败,如果有一个"。"在文本框中。
答案 0 :(得分:1)
你的正则表达式只匹配一个字符,你需要告诉它能够匹配更多,例如:
[RegularExpression(@"[^\.]+", ErrorMessage = "Milestone percentage values cannot contain decimals.")]
+表示长度必须为1个或更多字符。如果你只想要数字,你应该做什么就是
[RegularExpression(@"[0-9]+", ErrorMessage = "Milestone percentage values cannot contain decimals.")]
您的初始查询会阻止他们输入。但他们仍然可以输入其他字符,如符号或A-z