我使用正则表达式相当新,我对这个结果有疑问。
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;
}
答案 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;
}