条件:找出 137 或者 159 开头的11位手机号码 String phoneNumber= "所有的手机号码是:sdfsdf234234137565137342159805654569445234sd";
Pattern p1 = Pattern.compile("(^137|^159\\d{11})");
Matcher m1 = p1.matcher(phoneNumber);
if(m1.find()){
System.out.println("提取的手机号码是:"+m1.group());
}我想把其中符合条件的都提取出来,应该如何改我的程序啊?
请各路高手帮忙看看!
我不知道我错在哪里啊?

解决方案 »

  1.   


     String phoneNumber= "所有的手机号码是:sdfsdf234234137565137342159805654569445234sd";
            Pattern p = Pattern.compile("(137\\d{8}|159\\d{8})");
            Matcher m = p.matcher(phoneNumber);
            while(m.find()){
                System.out.println("提取的手机号码是:" + m.group());
            }
      

  2.   


     String phoneNumber= "所有的手机号码是:sdfsdf234234137565137342159805654569445234sd";
            Pattern p1 = Pattern.compile("137\\d{8}|159\\d{8}");
            Matcher m1 = p1.matcher(phoneNumber);
            while(m1.find()){
                System.out.println("提取的手机号码是:"+m1.group());
            }
      

  3.   


    String phoneNumber= "所有的手机号码是:sdfsdf234234137565137342159805654569445234sd";
           Pattern p1 = Pattern.compile("(137|159)\\d{8}");
           Matcher m1 = p1.matcher(phoneNumber);
           int start = 0;
           while(m1.find(start)){
               System.out.println("提取的手机号码是:"+m1.group());
               start = m1.start() + 3;
           }
      

  4.   

    String phoneNumber = "所有的手机号码是:sdfsdf234234137565137342159805654569445234sd";
    Pattern p1 = Pattern.compile("(137|159)[0-9]{8}");
    Matcher m1 = p1.matcher(phoneNumber);
    while (m1.find()) {
    System.out.println("提取的手机号码是:" + m1.group());
    }