Regex只允许100到999999之间的数字

本文关键字:999999 之间 数字 Regex | 更新日期: 2023-09-27 18:06:37

谁能帮助c#代码使用正则表达式验证只接受100到999999之间的数字的文本框

谢谢,他。

Regex只允许100到999999之间的数字

你不需要一个正则表达式。

int n;
if (!int.TryParse(textBox.Text.Trim(), out n) || n<100 || n>999999)
{
  // Display error message: Out of range or not a number
}

编辑:如果CF是目标,那么你不能使用int.TryParse()。退回到int.Parse()并输入更多的错误捕获代码:

int n;
try
{
  int n = int.Parse(textBox.Text.Trim());
  if (n<100 || n>999999)
  {
    // Display error message: Out of range
  }
  else
  {
    // OK
  }
}
catch(Exception ex)
{
   // Display error message: Not a number. 
   //   You may want to catch the individual exception types 
   //   for more info about the error
}

您的需求转换为三到六位数,首先不是零。我不记得c#是否默认锚定REs,所以我也把它们放进去了。

<>以前^[1 - 9][0 - 9]{2、5}$

一种直接的方法是使用正则表达式

^[1-9][0-9]{2,5}$

如果你想允许前导零(但仍然保持6位的限制),正则表达式将是

^(?=[0-9]{3,6}$)0*[1-9][0-9]{2,5}

最后一个可能需要一些解释:它首先使用正向前瞻[(?=)]来确保整个输入是3到6位,然后它确保它是由任意数量的前导零和100-999999范围内的数字组成的。

然而,使用更适合任务的东西(可能是数字比较?)可能是一个好主意。

这样就可以了:

^[1-9]'d{2,5}$

必须使用正则表达式吗?

int result;
if(Int.TryParse(string, out result) && result > 100 && result < 999999) {
    //do whatever with result
}
else
{
    //invalid input
}

您可以考虑另一种方法

[1-9]'d{2,5}

为什么不使用NumericUpDown控件来指定最小值和最大值呢?而且它也只允许输入数字,从而节省了额外的验证,以确保可以输入任何非数字

来自示例:

public void InstantiateMyNumericUpDown()
{
   // Create and initialize a NumericUpDown control.
   numericUpDown1 = new NumericUpDown();
   // Dock the control to the top of the form.
   numericUpDown1.Dock = System.Windows.Forms.DockStyle.Top;
   // Set the Minimum, Maximum, and initial Value.
   numericUpDown1.Value = 100;
   numericUpDown1.Maximum = 999999;
   numericUpDown1.Minimum = 100;
   // Add the NumericUpDown to the Form.
   Controls.Add(numericUpDown1);
}

也许可以接受前导零:

^0*[1-9]'d{2,5}$