移动号段有  "134;135;136;137;138;139;150;151;157;158;159;152;187;188";
联通号段有 = "130;131;132;155;156;186";正则表达式先判断是否11位,再根据前3位号段判断是移动还是联通还是其他!谢谢

解决方案 »

  1.   

    String str = "1**********"
    if(str.length == 1) {
        String s = str.subString(0, 3);
        if("134".equals(s) || "135".equals(s) || .......... || "188".equals(s)) {
            //移动
        }
        if("130".equals(s)......) {
            //联通
        }
    }
      

  2.   

    不好意思忘了加框框
    String str = "1**********"
    if(str.length == 1) {
      String s = str.subString(0, 3);
      if("134".equals(s) || "135".equals(s) || .......... || "188".equals(s)) {
      //移动
      }
      if("130".equals(s)......) {
      //联通
      }
    }
      

  3.   

    private static Pattern mobilePattern = Pattern.compile("(13[0-9]|15[0|1|3|5|6|8|9])\\d{8}");
      

  4.   

    移动:(?<!\d)(13[4-9]|15[0-27-9]|18[78])\d{8}(?!\d)
    联通:(?<!\d)(13[0-2]|15[56]|186)\d{8}(?!\d)
      

  5.   

    JAVA代码参考如下:   
    String msisdn = "18600000000";
            if(msisdn.matches("(13[4-9]|15[0-27-9]|18[78])\\d{8}"))
            {
                System.out.println("移动号码:" + msisdn);
            }
            else if(msisdn.matches("(13[0-3]|15[56]|186)\\d{8}"))
            {
                System.out.println("联通号码:" + msisdn);
            }