繁体   English   中英

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

[英]Regular expression to match numbers between 1-5000

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

我尝试了以下但它不会工作:

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

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

通过预先进行一些解析,您可以使正则表达式变得非常简单:

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");
}

试试......

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

您可以执行以下操作:

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

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

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

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

你可以试试这样的东西(0-366)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM