C#Regex为0-100

时间:2014-08-19 09:28:05

标签: c# .net regex

我的c#mvc模型上有一个字段来保持百分比 - 我想使用RegEx数据注释来验证该字段只包含0-100的值

我在这里看到了类似的正则表达式 - ^([1-9][0-9]{0,2}|1000)$ - 匹配值1-1000 - 我不确定是否正确修改以使其适合我的场景?

我尝试过类似^([0-9][0-9]{0,2}|100)$下面的内容,但没有按预期工作?

6 个答案:

答案 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])$

DEMO

<强>解释

  • ^断言我们刚开始。
  • (?:)非捕获组,仅进行匹配操作。
  • 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)$