正则表达式只允许介于100和999999之间的数字

时间:2011-08-24 16:21:48

标签: c# regex compact-framework

任何人都可以使用正则表达式帮助C#代码验证只接受100到999999之间数字的文本框

谢谢, 吕。

8 个答案:

答案 0 :(得分:9)

你不需要正则表达式。

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
}

答案 1 :(得分:3)

您的要求转换为三到六位数,首先不是零。我不记得C#锚定RE是否默认,所以我也将它们放入。

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

答案 2 :(得分:1)

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

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

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

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

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

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

答案 3 :(得分:1)

你必须使用正则表达式吗? <怎么样

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

答案 4 :(得分:1)

这样可以解决问题:

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

答案 5 :(得分:0)

您可以考虑的另一种方法

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

答案 6 :(得分:0)

为什么不使用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);
}

答案 7 :(得分:0)

也许接受领先零:

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