8.javaSE --- 常用API --- 正则表达式

正则表达式:1.可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性

                      2.在一段文本中查找满足要求的内容

规则:

        一、字符类(注:[]不是数组,而是限定范围,只匹配一个字符)

                1.[abc] --- 只能是a,b,c单个字符

                2.[^abc] --- 除了a,b,c之外的任何字符

                3.[a-zA-Z] --- a-z A-Z(包括)

                4.[a-d[m-p]] --- a-d或m-p

                5.[a-z&&[def]] --- a-z和def的交集

                6.[a-z&&[^bc]] --- a-z和非bc的交集

                7.[a-z&&[^m-p]] --- a-z和除了m-p的交集

(注:如果要表示交集,那么需要用&&,如果是&,那么其本身就是且符号,没有实际含义)

        二、预定义字符(只匹配一个字符)

                1.   . --- 任何字符(回车符号不匹配)

                2.   \d --- 一个数字:[0-9]

                3.   \D --- 非数字:[^0-9]

                4.   \s --- 一个空白字符:[\t \n \x08 \f \r]

                5.   \S --- 非空白字符:[^\s]

                6.   \w --- [a-zA-Z_0-9]英文、数字、下划线

                7.   \W --- [^\w]一个非单词字符

(注:java中\表示转义字符的开始,所以要使之成立,那么就需要再加个\,简单记忆两个\表示一个\)

        三、数量词

                1.X? --- X,一次或零次

                2.X* --- X,零次或多次

                3.X+ --- X,一次或多次

                4.X{n} --- X,正好n次

                5.X{n,} --- X,至少n次

                6.X{n,m} --- X,至少n但不超过m次 

如果记不住那么也不用担心,打开API文档,搜索pattern,里面有正则表达式的构造规则,String类里面有个matches的方法,里面有个正则表达式的链接,点击就可以查看了

语法:System.out.println("输入的字符".matches("规则"));

编写心得:

        1.按照正确的数据进行拆分

        2.找每一部分的规律,并编写正则表达式

        3.吧每一部分的正则拼接在一起,就是最终的结果

(拼写的时候:从左到右)

以下是两个练习:

public static void main(String[] args) {
        /*
        需求:
            请编写正则表达式验证用户输入的手机号码是否满足需求
            请编写正则表达式验证用户输入的邮箱号码是否满足需求
            请编写正则表达式验证用户输入的座机电话号码是否满足需求

            验证手机号码      15575468875 1665484577 13354887645 16446885478
            验证邮箱号码      215447784@qq.com 54584645@163.com 5477844@itfang.com
            验证座机号码      020-4658554 031-4578954 011-4754997
         */
        //从左至右原则
        //1.手机号
        //验证手机号码      15575468875 1665484577 13354887645 16446885478
        String regex1 = "[\\d[^0]][3-9]\\d{9}";
        System.out.println("15575468875".matches(regex1));//true
        System.out.println("1665484577".matches(regex1));//只有十位,false
        System.out.println("13354887645".matches(regex1));//true
        System.out.println("16446885478".matches(regex1));//true
        System.out.println("-----------------");

        //2.座机号
        //验证座机号码      020-4658554 031-4578954 011-4754997
        String regex2 = "[0][\\d[^0]]{2}-\\d{5,10}";
        System.out.println("020-4658554".matches(regex2));//true
        System.out.println("031-4578954".matches(regex2));//true
        System.out.println("011-4754997".matches(regex2));//true
        System.out.println("------------------------");
        //3.邮箱号
        //验证邮箱号码      215447784@qq.com 54584645@163.com fang@itfang.com
        String regex3 = "[\\w[^_]]+[@][[\\w^_]]+[[.][\\w^_]]+";
        System.out.println("215447784@qq.com".matches(regex3));
        System.out.println("54584645@163.com".matches(regex3));
        System.out.println("fang@itfang.com".matches(regex3));
    }

 

public static void main(String[] args) {
     /*
        需求:假如现在要求校验一个qq号码是否正确
        规则:6位及20位之内,0不能在开头,必须全部是数字
            使用正则表达式检验
            示范qq号(随便弄的):5461215,6x545548,645588225,15355778925,0154656
      */
        String regex = "[1-9][\\d]{5,19}";
        System.out.println("5461215".matches(regex));
        System.out.println("6x545548".matches(regex));
        System.out.println("645588225".matches(regex));
        System.out.println("15355778925".matches(regex));
        System.out.println("0154656".matches(regex));
    }

扩展:忽略大小写

  public static void main(String[] args) {
     //忽略大小写
        String regex = "(?i)abc";
        System.out.println("abc".matches(regex));
        System.out.println("aBc".matches(regex));
        System.out.println("ABC".matches(regex));

        System.out.println("----------");
        String regex1 = "a(?i)bc";
        System.out.println("abc".matches(regex1));
        System.out.println("aBc".matches(regex1));
        System.out.println("ABC".matches(regex1));

    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值