A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 耿渊博 中级黑马   /  2014-3-24 00:22  /  1184 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下代码是验证电话号码有效性,大家看看还有更好的方法
  1. public class CheckPhoneNum {
  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 String phoneNum = "0431-89526232188";
  5.                 System.out.println(check(phoneNum));
  6.                
  7.         }
  8.         public static String check(String text){
  9.                 if(text == null || text.isEmpty()){
  10.                         return"请输入号码!";
  11.                 }
  12.                 String regex = "^\\d{3}-?\\d{8}\\d{4}-?d{8}$";
  13.                 if(text.matches(regex)){
  14.                         return text + "\n 是一个合法的电话号码!";
  15.                 }else{
  16.                         return text + "\n不是一个合法的电话号码!";
  17.                 }
  18.         }

  19. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

4 个回复

倒序浏览
好像很厉害的样子!可是有点看不懂额。。。。
回复 使用道具 举报
楼主说一下规则么,什么号码就算合法了?
回复 使用道具 举报
  1. /**
  2.    * <pre>
  3. Const为常量类或接口
  4. String TEL_MOBILE = config.get("TEL_MOBILE", "134,135,136,137,138,139,150,158,159");  //移动的号码段
  5. String TEL_UNICOM = config.get("TEL_UNICOM", "130,131,132,133,153,156");  //联通的号码段

  6.      * 号码段放入配置文件,目前(2007-10-11)的号码段为:
  7.      * 移动:134,135,136,137,138,139,150,158,159
  8.      * 联通:130,131,132,133,153,156
  9.    * </pre>
  10.    * @param tel
  11.    * @return 运营商  (1=移动、2=联通)
  12.    */
  13.   public static byte getTelCompany(String tel)
  14.   {
  15.       String telHead = tel.substring(0, 3);
  16.       if(isMobileUnicom(telHead,1))
  17.       {
  18.           return 1;
  19.       }
  20.       if(isMobileUnicom(telHead,2))
  21.       {
  22.           return 2;
  23.       }
  24.       
  25.       return -1;
  26.   }

  27.   private static boolean isMobileUnicom(String telHead,int company)
  28.   {
  29.       String tel = "";
  30.       
  31.       switch(company)
  32.       {
  33.           case 1:
  34.               tel = Const.TEL_MOBILE;
  35.               break;
  36.           case 2:
  37.               tel = Const.TEL_UNICOM;
  38.               break;
  39.           default:
  40.               return false;
  41.       }
  42.       
  43.       String[] aTel = tel.split(",");
  44.       
  45.       int iCount = aTel.length;

  46.       for(int i=0;i<iCount;i++)
  47.       {
  48.           if (aTel[i].equals(telHead))
  49.           {
  50.               return true;
  51.           }
  52.       }
  53.       
  54.       return false;
  55.   }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 赵彦丰 于 2014-3-25 10:54 编辑

用用这个
  1. "^[1][358]\\d{9}[        DISCUZ_CODE_0        ]quot;
复制代码

1代表第一位   358代表第二位  后面跟9位数字  都是13 15 18 号段的 简单得验证
  1. public static boolean isMobileNO(String mobiles) {
  2.                
  3.                 Pattern p = Pattern
  4.                                 .compile("^[1][358]\\d{9}[        DISCUZ_CODE_0        ]quot;);
  5.                 Matcher m = p.matcher(mobiles);

  6.                 System.out.println(m.matches() + "---");

  7.                 return m.matches();

  8.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马