正则表达式

正则表达式 regex

  • 常用来 校验用户的输入 是否合法(和提前定义的模式是否匹配)

1,匹配子表达式出现的次数

? * + {n} {n,} {n,m}

public static void main(String[] args) {
        String str = "javaaaaaaa";
        // * 前面的子表达式 出现0或者多次
        boolean flag1 = str.matches("java*");
        //+  至少出现一次
        boolean flag2 = str.matches("java+");
        // ? 0或1
        boolean flag3 = str.matches("java?");
        // {n} 匹配确定的 n 次。
        boolean flag4 = str.matches("java{3}");
        // {n,}  至少出现n次
        boolean flag5 = str.matches("java{3,}");
        //{n,m}  至少出现 n次且小于等于m次
        boolean flag = str.matches("java{3,6}");
        System.out.println(flag);
    }

单个\ 表示为转义字符 \ \ 表示的是\

2,匹配数字 字母字符 空格

  public static void method2() {
        String str = "abc123";
        System.out.println(str);
        //  \d 用来匹配数字字符的 [0-9]
        boolean flag1 = str.matches("\\d{11}");
        // \w 匹配字符 [A-Za-z0-9]
        boolean flag2 = str.matches("\\w{5}\\w{3}");
        // \s 	匹配任何空白字符 \t\n\f\v
        boolean flag3 = str.matches("\\w{5}\\s{1}\\w{3,}");
        // . 匹配任何字符 除了换行\n \r  \\.表示匹配普通的点
        boolean flag = str.matches(".+");
//        boolean flag = str.matches("\\.+");
        System.out.println(flag);
    }

3,[ ] 匹配

// [] 只匹配一个
    public static void method3() {
        String str = "j2va";
        // [abc] 字符集合。匹配所包含的任意一个字符。
        boolean flag1 = str.matches("j[abc]va");
        // [^abc] 负值字符集合。匹配除了括号中的任意字符。
        boolean flag2 = str.matches("j[^abc]va");
        // [a-z] [A-Z] [0-9] 范围匹配
        boolean flag = str.matches("j[0-9]va");
        System.out.println(flag);
    }

练习 匹配手机号

    public static void method4() {
        //匹配手机号
        //1[356789]\\d{9}
        String str = "13567892346";
        boolean flag = str.matches("^1[3-9]\\d{9}$");
        System.out.println(flag);
    }

4,分组

    // 分组
    public static void method5() {
        String str = "23423@qq.com";
        boolean flag = str.matches("");
        // 编译
        Pattern p = Pattern.compile("(\\w+)@(\\w+)\\.com");
        Matcher m = p.matcher(str);
        System.out.println(m.matches());
        if (m.matches()) {
            // 1表示第一组
            String group = m.group(2);
            System.out.println(group);
        }
    }

练习 邮箱匹配

    /**
     * 邮箱匹配
     */
    public static void method6() {
        String email = "666@sina.cn.com";
        String regEx = "^[a-z0-9A-Z]+[-|a-z0-9A-Z._]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$";
        System.out.println(email.matches(regEx));
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值