黑马程序员技术交流社区

标题: 题目要求:由用户输入电话号码。用正则表达式进行匹配,如果匹配true,打印电话号码, [打印本页]

作者: 小罗同学    时间: 2015-3-30 21:22
标题: 题目要求:由用户输入电话号码。用正则表达式进行匹配,如果匹配true,打印电话号码,
package Test11;

import java.util.Scanner;

/**题目要求:由用户输入电话号码。用正则表达式进行匹配,如果匹配true,打印电话号码,
* 如果匹配false,打印您输入的电话号码有误,
*正则规则:第1位是1,第二位可以是数字358其中之一,
* 后面3位任意数字,最后6位任意相同的数字,
*例如:18716999999 13485666666
*
*
*
*
* @author Administrator
*
*/

public class Test11 {
        public static void main(String[] args) {
                while(true){
                        String regex="1+[358]+\\d{3}+[\\d]{6}";
                        Scanner sc=new Scanner(System. in);
                        System.out.println("请输入电话号码");
                        String s=sc.nextLine();
                    if(s.matches(regex)){
                            String m = s.substring(5);
                            switch(m){
                            case "000000":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                       
                            case "111111":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                     
                            case "222222":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                            case "333333":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                            case "444444":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                            case "555555":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                            case "666666":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                            case "777777":
                                    System.out.println("您的电话号码是:"+s);
                                    break;
                        case "888888":
                                System.out.println("您的电话号码是:"+s);
                                break;
                        case "999999":
                                        System.out.println("您的电话号码是:"+s);
                                        break;
                  
                        default:
                               
                                System.out.println("您输入的电话号码有误");
                       
                            }
                       
                     }
               
                }
               
        }
}

作者: 阿霞    时间: 2015-3-31 09:11
正则表达式有问题  六位任意相同数字是:(\\d)\\1{5}  switch语句就可以去掉了

import java.util.*;

public class Test11
{
    public static void main(String[] args)
    {
          while(true)
          {
                        
                String regex="1+[358]+\\d{3}+(\\d)\\1{5}";
                Scanner sc=new Scanner(System. in);
                System.out.println("请输入电话号码");
                String s=sc.nextLine();

                if(s.matches(regex))
                {
                      System.out.println("您的电话号码是:"+s);
                      sc.close();
                      break;
                     
                }
                else
                      System.out.println("您输入的电话号码有误");
               
                        
           }
      }
               
}




作者: 小丑    时间: 2015-3-31 22:03
楼主写的也太麻烦了吧。。。
正则规则应该再看一下。。
作者: 暗羽部落    时间: 2015-3-31 22:45
加油~~~我们一起努力~~
作者: ShadowDancer    时间: 2015-4-1 08:01
怎么还用上switch了???
作者: 懒的呼吸    时间: 2015-4-1 08:58
阿霞 发表于 2015-3-31 09:11
正则表达式有问题  六位任意相同数字是:(\\d)\\1{5}  switch语句就可以去掉了

import java.util.*;

(\\d)\\1{5}这个是七个任意相同数字还是六个? (\\d)\\1是两个吧?{5}这又是五个。有点晕,求教
作者: 胡几手    时间: 2015-4-1 09:25
懒的呼吸 发表于 2015-4-1 08:58
(\\d)\\1{5}这个是七个任意相同数字还是六个? (\\d)\\1是两个吧?{5}这又是五个。有点晕,求教 ...

(\\d)是一个,然后\\1代表引用第一个组,而后面的{5}就代表引用第一个组五次,故一共六次。要是实在弄不清楚,写个程序测试一下就知道了。
作者: 未来不是梦!    时间: 2015-4-17 12:12
太厉害了
作者: 一袭蓝10    时间: 2015-4-17 12:37
学习了。。。
作者: 未来不是梦!    时间: 2015-5-2 10:51
真的很牛逼
作者: 殃金咒    时间: 2015-5-2 15:21
大神好躲





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2