我有一个奇怪的问题,我正在使用下面的代码测试电话号码,在测试中我的代码工作正常。该程序昨天上线,有人使用电话号码08720 123 456,我的代码失败。您能告诉我为什么为什么对0161 287 1234返回TRUE,对08720 123 456返回FALSE吗?
传真号码1:0161 287 1234 ---> IsNumber返回TRUE
传真号码2:08720 123 456 ---> IsNumber返回FALSE
static bool IsNumber(string value)
{
// Return true if this is a number.
int number1;
return int.TryParse(value, out number1);
}
bool testForFax = IsNumber(faxOrEmail);
if (testForFax == true)
{
backgroundWorker2.RunWorkerAsync(); //send fax
}
else
{
MessageBox.Show("Please enter a fax number.");
}
请您参考如下方法:
int
可以采用的值的范围是从负数2147483648到正数2147483647。0161 287 1234
在此范围内,08720 123 456
不在此范围内。
您不应该以这种方式解析电话号码-从数学上讲,它不是数字(您可以以有意义的方式添加/减去电话号码吗?)。
您应该使用regular expression对其进行验证。