标题:求一程序,验证输入为电话号码或手机
只看楼主
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
结帖率:100%
已结贴  问题点数:50 回复次数:16 
求一程序,验证输入为电话号码或手机
现在有一界面,需要录入客户的联系方式,要怎么限制输入会比较好?!你们首先是怎么想?     
要求尽量考虑周全!
说明一下:我这很多客户很多是国外的!我们全国各地都有营业点,甚至国外(香港,纽约和伦敦都有)!
所有很多客户电话录入时还的加国家区号,还有各国的手机和电话位数和开头都不一样!
还有如果同一号码,不同地区营业员录入就会不一样,如北京营业员录入一个客户本地手机直接录入就行,但录入一个客户外地手机就要前面加0

另外提多一个问题:
怎样判断获取到的号码是不是手机号码?暂时先考虑国内和香港的情况,如其他地方也能考虑在内更好!
说明:目前系统电话输入格式统一为,电话如需加区号,则连着输入,不用加‘-’和括号,如(02086308107),手机如外地需在前加0

[ 本帖最后由 smart0721 于 2012-11-24 23:10 编辑 ]
搜索更多相关主题的帖子: 录入 电话号码 
2012-11-23 22:47
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
得分:20 
正则表达式
程序代码:
using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            var regexTelephone = new Regex(@"^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$");
            var regexMobilePhone = new Regex(@"^[1][358]\d{9}$");
            while (true)
            {
                Console.Write("Phone:");
                var inputString = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(inputString)) continue;
                if (regexTelephone.IsMatch(inputString) || regexMobilePhone.IsMatch(inputString))
                {
                    Console.WriteLine("Okay!");
                    break;
                }
                Console.WriteLine("Wrong!");
            }
            Console.Write("Press any key to exit...");
            Console.ReadKey();
        }
    }
}


 

为提高中华编程水平而奋斗
2012-11-24 00:05
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
得分:0 
哦,很好!谢谢!你这程序如果局限国内情况的话,很基本比较完美的!
不过我这很多客户很多是国外的!我们全国各地都有营业点,甚至国外(香港,纽约和伦敦都有)!
所有很多客户电话录入时还的加国家区号,还有各国的手机和电话位数和开头都不一样!
还有如果同一号码,不同地区营业员录入就会不一样,如北京营业员录入一个客户本地手机直接录入就行,但录入一个客户外地手机就要前面加0

2012-11-24 22:49
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
得分:0 
改动一下(甚至有需要时根据需要另外搞几个以适配国外的)正则表达式就可以了。

为提高中华编程水平而奋斗
2012-11-24 22:56
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
得分:0 
国外的是必需的!因为基本是国际业务!问题是各国都不一样,要用很多正则去判断匹配,我想能不能简化一下?
2012-11-24 23:19
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
得分:0 
如果想控制的精确点,还要研究国内各地区号与其号码规则,就像国内好像没有区号00开头的
2012-11-24 23:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:5 
在程序内部硬编码正则表达式匹配所有地区是不现实的。程序运行时从外部配置文件中读入当地的正则表达式,应该可行。

授人以渔,不授人以鱼。
2012-11-24 23:28
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
得分:0 
回复 7楼 TonyDeng
这我知道,但是现在问题是我任何营业点都可能用到各地的正则,不是我中国营业点就只有中国的客户,可能全球各地的都有!国外营业点也是如此!
2012-11-24 23:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:15 
在营业点录入(仅仅是使用还好)各地的数据就麻烦了。录入电话号码前先强制录入地区,再(在数据库中)查找地区的号码正则匹配,应该比全球匹配好一点。

授人以渔,不授人以鱼。
2012-11-24 23:42
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
得分:5 
那这个貌似只有当全球都统一了电话号码的规则后才能够简化,目前只有去理解各地的规则并多且准的去匹配了。

为提高中华编程水平而奋斗
2012-11-24 23:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-388204-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.330616 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved