正则表达式匹配1-5000之间的数字

时间:2016-09-13 14:56:41

标签: c# regex

我想将正则表达式用于只允许1-5000之间的数字的文本框

我尝试了以下但是它无法工作:

@"/^(?:1|5000|-[1-9]\d?)$/

5 个答案:

答案 0 :(得分:7)

您可以使用^(?:[1-9]|\d{2,3}|[1-4]\d{3}|5000)$。但是你最好解析为Int然后做简单的数学。

答案 1 :(得分:5)

事先进行一些解析,你可以使正则表达式变得非常简单:

string s = textBox1.Text;
string r = "";
int n = 0;
if (int.TryParse(s, out n) && (n>=1 && n<=5000))
{
    r = "y";
}

if (Regex.IsMatch(r, "y")) {
    // input was valid
    MessageBox.Show("OK");
}

答案 2 :(得分:2)

尝试......

^(:[1-4] [0-9] {1,3} | [1-9] [0-9] {0,2} | 5000)$

答案 3 :(得分:2)

您可以执行以下操作:

task body Whatchdog is
   dur : constant Duration := Duration(Float(dur_in_msec) / 1_000.0);

前两组将匹配1 - 4999范围内的任何内容。最后添加| 5000使其匹配范围1 - 5000.这里的三种情况是:

  • 数字正好是5000
  • 该数字介于1到3位数之间。在这种情况下,它不可能超过5000.但是,第一个数字必须是1 - 9,这样你才能得到类似“009”或“000”的东西。
  • 该数字为4位数,在这种情况下,它必须介于1000 - 4999
  • 之间

话虽如此,我认为解析int并查看它是否在范围内可能更简单。

答案 4 :(得分:0)

您可以尝试这样的事情(0-366)

 ^(0?[0-9]?[0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6])$