10.正则表达式的概述

作者: 今天庹 | 来源:发表于2018-10-11 19:58 被阅读0次

    正则表达式概述

    正则表达式是专门解决字符串规则匹配的工具。
    正则表达式也是一个字符串,用来定义匹配规则。
    参照帮助文档,在Pattern类中有简单的规则定义,可以结合字符串类的方法使用。

    正则表达式匹配规则

    参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母。我们来学习语法规则。

    正则表达式的语法规则:

    字符:x
    含义:代表的是字符x
    例如:匹配规则为 "a",那么需要匹配的字符串内容就是 ”a”

    字符:\
    含义:代表的是反斜线字符''
    例如:匹配规则为"\" ,那么需要匹配的字符串内容就是 ”\”

    字符类:[abc]
    含义:代表的是字符a、b 或 c
    例如:匹配规则为"[abc]" ,那么需要匹配的内容就是字符a,或者字符b,或字符c的一个

    字符类:[^abc]
    含义:代表的是除了 a、b 或 c以外的任何字符
    例如:匹配规则为"[^abc]",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符

    字符类:[a-zA-Z]
    含义:代表的是a 到 z 或 A 到 Z,两头的字母包括在内
    例如:匹配规则为"[a-zA-Z]",那么需要匹配的是一个大写或者小写字母

    字符类:[0-9]
    含义:代表的是 0到9数字,两头的数字包括在内
    例如:匹配规则为"[0-9]",那么需要匹配的是一个数字

    字符类:[a-zA-Z_0-9]
    含义:代表的字母或者数字或者下划线(即单词字符)
    例如:匹配规则为" [a-zA-Z_0-9] ",那么需要匹配的是一个字母或者是一个数字或一个下滑线

    预定义字符类:.
    含义:代表的是任何字符
    例如:匹配规则为" . ",那么需要匹配的是一个任意字符。如果,就想使用 . 的话,使用匹配规则"\."来实现

    预定义字符类:\d [0-9]
    含义:代表的是 0到9数字,两头的数字包括在内,相当于[0-9]
    例如:匹配规则为"\d ",那么需要匹配的是一个数字

    预定义字符类:\w [a-zA-Z_0-9]
    含义:代表的字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9]
    例如:匹配规则为"\w ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线

    数量词:X?
    含义:代表的是X出现一次或一次也没有
    例如:匹配规则为"a?",那么需要匹配的内容是一个字符a,或者一个a都没有

    数量词:X*
    含义:代表的是X出现零次或多次
    例如:匹配规则为"a*" ,那么需要匹配的内容是多个字符a,或者一个a都没有

    数量词:X+
    含义:代表的是X出现一次或多次
    例如:匹配规则为"a+",那么需要匹配的内容是多个字符a,或者一个a

    数量词:X{n}
    含义:代表的是X出现恰好 n 次
    例如:匹配规则为"a{5}",那么需要匹配的内容是5个字符a

    数量词:X{n,}
    含义:代表的是X出现至少 n 次
    例如:匹配规则为"a{5, }",那么需要匹配的内容是最少有5个字符a

    数量词:X{n,m}
    含义:代表的是X出现至少 n 次,但是不超过 m 次
    例如:匹配规则为"a{5,8}",那么需要匹配的内容是有5个字符a 到 8个字符a之间

    package com.itheima_07;
    
    /*
     *  校验QQ号码
     *      要求必须是5-15位
     *      0不能开头
     *      必须都是数字
     * 
     *  正则表达式:(与java语言无关)就是一套规则,可以用于匹配字符串
     * 
     *   boolean matches(String regex) : 判断当前字符串是否匹配指定的正则表达式,如果匹配则返回true否则返回false
     * 
     *  
     */
    public class RegexDemo {
        public static void main(String[] args) {
            String qq = "12345";
            /*boolean flag = checkQQ(qq);
            System.out.println(flag);*/
            
            boolean flag = qq.matches("[1-9][0-9]{4,14}");//正则表达式
            System.out.println(flag);
        }
        
        public static boolean checkQQ(String qq) {
            int length = qq.length();
            //要求必须是5-15位
            if(length < 5 || length > 15) {
                return false;
            }
            
            //0不能开头
            if(qq.startsWith("0")) {
                return false;
            }
            
            //必须都是数字
            for(int i = 0; i < qq.length(); i++) {
                //得到参数的每个字符
                char c = qq.charAt(i);
                if(c < '0' || c > '9') {
                    return false;
                }
            }
            
            return true;//符合要求
        }
    }
    ```0

    相关文章

      网友评论

        本文标题:10.正则表达式的概述

        本文链接:https://www.haomeiwen.com/subject/vsnmaftx.html