0

我的要求是我输入的数字中的前两位数字在 00-32 的范围内。我如何通过 C# 中的正则表达式检查这个?我想不通!!`

4

5 回答 5

4

你真的需要正则表达式吗?

int val;
if (Int32.TryParse("00ABFSSDF".Substring(0, 2), out val))
{
    if (val >= 0 && val <= 32)
    {
        // valid
    }
}
于 2013-10-21T10:13:28.983 回答
4

由于这几乎可以肯定是一个学习练习,这里有一些提示:

  • 您的 rexex 将是|两个部分的“或”,都验证前两个字符
  • 如果第一个字符是数字是 0..2,则第一个表达式部分将匹配,第二个字符是数字 0..9
  • 如果第一个字符是 digit3并且第二个字符是 digit ,则第二个表达式部分将匹配0..2

要匹配数字范围,请使用[A-B]范围,其中A是要匹配的数字的下限和B上限(包括两个边界)。

于 2013-10-21T10:16:40.103 回答
1

尝试类似的东西

Regex reg = new Regex(@"^([0-2]?[0-9]|3[0-2])$");
Console.WriteLine(reg.IsMatch("00"));
Console.WriteLine(reg.IsMatch("22"));
Console.WriteLine(reg.IsMatch("33"));
Console.WriteLine(reg.IsMatch("42"));

[0-2]?[0-9]匹配从 0 到 29 的所有数字,匹配3[0-2]30-32。

这将验证从 0 到 32 的数字,并且还允许使用前导零的数字,例如 08。

于 2013-10-21T10:20:03.030 回答
1

您应该按如下方式划分区域:

^[012]\d|3[012]
于 2013-10-21T10:22:00.113 回答
0
if(Regex.IsMatch("123456789","^([0-2][0-9]|3[0-2])"))
    // match
于 2013-10-21T10:33:17.553 回答