任何人都可以使用正则表达式帮助C#代码验证只接受100到999999之间数字的文本框
谢谢, 吕。
答案 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}$