我可以在没有正则表达式的情况下限制控制台应用中的电话号码吗? 我有这个代码,但它不适用于国际号码,从00开始。
static public bool CheckPhoneNumb (string phoneNumber)
{
long lphoneNumber;
return ((phoneNumber.Length >= 9) && phoneNumber.Length <= 15) &&
(long.TryParse (phoneNumber, out lphoneNumber))) ? true : false;
}
Thnks。
答案 0 :(得分:5)
如果您需要支持全球通话,那么使用正则表达式会很难。
我建议使用Google电话号码验证库。
解析/格式化/验证世界上所有国家/地区的电话号码。
https://code.google.com/p/libphonenumber/
在页面底部链接了一个C#端口。
答案 1 :(得分:1)
国际电话号码不以00开头.00部分是您在世界各地开始拨打实际国际号码(在00之后)的代码。该号码会从您拨打的地方发生变化。例如,在美国,它是011.在欧洲,它是00.日本有不同的代码,还有一些其他代码。
是的,您可以在没有正则表达式的情况下限制它,但您可能会觉得它更容易,我强烈建议您不要存储您的(或任何)国际访问代码,因为它根据您的不同而不同显示它。
答案 2 :(得分:1)
你寻求的答案比你想象的要复杂得多。
通常,数字本身会根据添加/删除前缀的原点和目标语言环境而变化。
什么样的电话号码? NANP(北美编号计划)还是其他地方?
在http://www.nanpa.com/描述了涵盖美国,加拿大,墨西哥和加勒比海地区的NANP。对于世界各地的编号计划,一个好的起点是http://www.wtng.info/的世界电话编号指南
答案 3 :(得分:-1)
return ((phoneNumber.Length >= 9) && phoneNumber.Length <= 15) && phoneNumber.All(char.IsNumber);