0

我可以在没有正则表达式的情况下限制控制台应用程序中的电话号码吗?我有这个代码,但它不适用于以 00 开头的国际号码。

   static public bool CheckPhoneNumb (string phoneNumber)
    {
        long lphoneNumber;
        return ((phoneNumber.Length >= 9) && phoneNumber.Length <= 15) &&
                (long.TryParse (phoneNumber, out lphoneNumber))) ? true : false;
    }

谢谢。

4

4 回答 4

5

如果您需要支持全球呼叫,那么使用正则表达式将很难做到这一点。

我建议使用 Google 电话号码验证库。

解析/格式化/验证世界所有国家/地区的电话号码。

https://code.google.com/p/libphonenumber/

页面底部有一个 C# 端口链接。

于 2013-03-26T16:58:09.890 回答
1

国际电话号码不以 00 开头。00 部分是您在您所在地区用于开始拨打实际国际号码(在 00 之后)的代码。该号码会从您拨打的位置更改。例如,在美国,它是 011。在欧洲,它是 00。日本有不同的代码,还有一些其他代码。

是的,您可以在不使用正则表达式的情况下对其进行限制,但您可能会发现它更容易,我强烈建议您不要将您的(或任何)国际访问代码与它一起存储,因为它会根据您向谁显示它而有所不同.

于 2013-03-26T17:00:37.213 回答
1

您寻求的答案比您想象的要复杂得多。

通常,数字本身会随着添加/删除前缀的来源和目的地区域设置而有所不同。

什么样的电话号码?NANP(北美编号计划)或其他地方?

涵盖美国、加拿大、墨西哥和加勒比地区的 NANP 详见http://www.nanpa.com/。对于世界各地的编号计划,一个很好的起点是http://www.wtng.info/上的世界电话号码指南

于 2013-03-26T17:09:11.327 回答
-1
return ((phoneNumber.Length >= 9) && phoneNumber.Length <= 15) && phoneNumber.All(char.IsNumber);
于 2013-03-26T16:58:14.403 回答