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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xuhao3622603 中级黑马   /  2015-7-4 22:27  /  526 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式:符合一定规则的表达式。
        作用:用于专门操作字符串。
        特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
        所以学习正则表达式,就是在学习一些特殊符号的使用。


        好处:可以简化对字符串的复杂操作。
        弊端:符号定义越多,正则越长,阅读性越差。

具体操作功能:

1,匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。

2, 切割:String split();

3,替换:String replaceAll(regx,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有组。


*/


class RegexDemo
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }

        /*
        对qq号码进行校验
        要求:5-15位,不能以0开头,只能是数字
        */
        public static void checkQQ()
        {
                String qq = "1312312a3102";

                int len = qq.length();

                if(len>=5 && len<=15)
                {
                        if(!qq.startsWith("0"))
                        {
                                /*
                                char[] arr = qq.toCharArray();
                                boolean flag = true;

                                for(int x=0;x<arr.length;x++)
                                {
                                        if(!(arr[x]>='0' && arr[x]<='9'))
                                        {
                                                flag = false;
                                                break;
                                        }
                                       
                                }
                               
                                if(flag)
                                {
                                        sop("qq:"+qq);
                                }
                                else
                                {
                                        sop("出现非法字符");
                                }
                                */

                                try
                                {
                                        long l = Long.parseLong(qq);
                                        sop("qq:"+qq);
                                }
                                catch(NumberFormatException e)
                                {
                                        sop("出现非法字符。。。。。。");
                                }

                               
                        }
                        else
                        {
                                sop("不能以0开头");
                        }
                }
                else
                {
                        sop("长度错误");
                }
        }

        public static void checkQQ_1()
        {
                String qq = "2312";

                String regex = "[1-9][0-9]{4,14}";

                boolean flag = qq.matches(regex);
                if(flag)
                        sop(qq+"...is ok");
                else
                        sop(qq+"....不合法");
        }

       
        /*
        匹配
        手机号段只有 13xxxx 15xxx 18xxxx
        */
        public static void ckeckTel()
        {

                String tel ="13222244332";
                String telReg = "1[358]\\d{9}";
                sop(tel.matches(telReg));
        }


        public static void splitDemo(String str,String reg)
        {
                String[] arr = str.split(reg);
                sop(arr.length);
                for(String s : arr)
                {
                        sop(s);
                }
        }


        public static void replaceAll(String str,String reg,String newStr)
        {
                str = str.replaceAll(reg,newStr);

                sop(str);
        }


        public static void main(String[] args)
        {
                //checkQQ();
                //checkQQ_1();
                //ckeckTel();
                //splitDemo("zhang,sjsd,asd,asda",",");
                //splitDemo("zhang sjsd asd asda"," ");
                //splitDemo("zhang  sjsd   asd  asda"," +");
                //splitDemo("zhang.sjsd.asd.asda","\\.");

                //按照叠词完成切割。为了可以让规则的结果被重用
                //可以将规则封装成一个组。用()完成。组的出现都有编号。
                //从1开始。 想要使用已有的组可以通过  \n(n就是组的编号)的形式来获取。
                //splitDemo("zhangssjsdaaasdaasda","(.)\\1+");


                String str = "da12ds333asd123123123dsa2342342sda576765";
                replaceAll(str,"\\d{5,}","#");

                String str1 = "niaaahammmo";
                replaceAll(str1,"(.)\\1+","2");
                replaceAll(str1,"(.)\\1+","$1");
        }


       
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马