我的c#mvc模型上有一个字段来保持百分比 - 我想使用RegEx数据注释来验证该字段只包含0-100的值
我在这里看到了类似的正则表达式 - ^([1-9][0-9]{0,2}|1000)$
- 匹配值1-1000 - 我不确定是否正确修改以使其适合我的场景?
我尝试过类似^([0-9][0-9]{0,2}|100)$
下面的内容,但没有按预期工作?
答案 0 :(得分:5)
为什么要使用正则表达式验证它?我认为使用.TryParse
和范围检查会更容易:
bool Validate(string input) {
int x;
return int.TryParse(input, out x) && x >= 0 && x <= 100;
}
如果你问我也更具可读性......
答案 1 :(得分:4)
您可以使用以下模式匹配0到100之间的数字
^(?:100|[1-9]?[0-9])$
<强>解释强>
^
断言我们刚开始。(?:)
非捕获组,仅进行匹配操作。100
匹配字符串100。|
逻辑OR运算符用于OR两个正则表达式。[1-9]?
匹配范围1到9之间的任何数字之一。?
在字符类使其成为可选项之后。[0-9]
匹配0到9范围内的任何一个数字。$
断言我们在行尾。答案 2 :(得分:1)
如果模型上的百分比字段是int
类型,则可以更轻松地使用范围注释:
[Range(0, 100)]
public int Percentage { get; set; }
答案 3 :(得分:0)
这样的事情应该有效:^([0-9]{1,2}|100)$
。话虽如此,请不要使用正则表达式进行数字评估。您应该使用数字运算符来实现此目的。
答案 4 :(得分:0)
你可以这样做:
^(([1-9] \ d)|≤100)$ 这将确保
至少有一个数字
多位数字以零以外的数字开头
唯一允许的三位数字是100。
答案 5 :(得分:0)
这将有效:
^([1-9]?[0-9]|100)$