RegEx仅接受0-9之间的数字

时间:2016-02-04 13:31:28

标签: c# regex

我使用正则表达式相当新,我对这个结果有疑问。

Regex @" ^ 0 [0-9] {9,10} $"接受数字之间的空格。如何阻止这一点,因为我只希望0到9之间的数字是可接受的字符。

有效结果应从零开始,并且有9或10位数字(不允许使用空格或任何其他字符)。

所有帮助表示赞赏。

这是我的代码

Regex telephoneExp = new Regex(@"^0[0-9]{9,10}$");
if (telephoneExp.Match(txtTelephoneNumber.Text).Success==false)
{
    MessageBox.Show("The telephone number is not valid, it must only contain digits (0-9) and be either 10 or 11 digits in length.");
    return false;
}

4 个答案:

答案 0 :(得分:0)

你试过这个来检查它是否只是一个数字:

^\d*$

更新:

(^0\d{8,9})$

检查以前导0

开头的9位或10位数字

答案 1 :(得分:0)

这有效

^0\d{9,10}$

匹配0,然后匹配9到10位。

您也可以使用Regex.IsMatch代替:

Regex telephoneExp = new Regex(@"^0\d{9,10}$");
if (!telephoneExp.IsMatch(txtTelephoneNumber.Text))
{
    MessageBox.Show("The telephone number is not valid, it must only contain digits (0-9) and be either 10 or 11 digits in length.");
    return false;
}

答案 2 :(得分:0)

您不需要正则表达式,您可以使用LINQ:

var text = txtTelephoneNumber.Text;
bool valid = false;

if (!String.IsNullOrEmpty(text))
{
    valid = text.First() == '0' &&
            9 <= text.Count() && text.Count() <= 10 &&
            text.All(c => Char.IsDigit(c));
}

if (!valid)
{
}

答案 3 :(得分:0)

您的代码是正确的,但使用Trim()函数删除空字符100%它将正常工作,

Regex telephoneExp = new Regex(@"^0[0-9]{9,10}$");
if (telephoneExp.Match(txtTelephoneNumber.Text.Trim()).Success==false)
{
    MessageBox.Show("The telephone number is not valid, it must only contain digits (0-9) and be either 10 or 11 digits in length.");
    return false;
}