Regex只允许100到999999之间的数字
本文关键字:999999 之间 数字 Regex | 更新日期: 2023-09-27 18:06:37
谁能帮助c#代码使用正则表达式验证只接受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}$