正则表达式基本使用介绍

正则表达式: 正则表达式用于操作字符串数据 。

如果要找正则表达式的规则

参考:
https://blog.csdn.net/chuxin_mm/article/details/85061213

先举个栗子吧:

/**
 * @author: wangqinmin
 * @date: 2018/12/11 14:51
 * @description: 正则
 */
public class DemoTest {

    public static void main(String[] args) {
        /**
         * 需求:对QQ号进行校验
         * 要求:长度必须5~15位, 只能是数字,0不能开头
         */
        checkQq("E128545848");
        /**
         * 第一位数:1-9
         * 后面的数:0-9,可以有4到14个数据
         */
        checkRegexQq("[1-9][0-9]{4,14}", "0128545848");

    }

    /**
     * 常规方法
     *
     * @param qq
     */
    public static void checkQq(String qq) {
        int length = qq.length();
        if (length < 5 && length > 15) {
            System.out.println("QQ号长度不正确");
            return;
        }

        if (qq.startsWith("0")) {
            System.out.println("QQ号不能以0开头");
            return;
        }

        try {
            Long.parseLong(qq);
        } catch (NumberFormatException e) {
            System.out.println("QQ号只能是数字");
            return;
        }

        System.out.println("QQ号校验成功");
    }

    /**
     * @param regex 定义QQ号的规则 (正则表达式)
     * @param qq    QQ号
     */
    public static void checkRegexQq(String regex, String qq) {
        if (qq.matches(regex)) {
            System.out.println("QQ号校验成功");
        } else {
            System.out.println("QQ号格式不正确");
        }
    }
}

但是又发现一个问题 :

缺点 :

1. 正则只能提示正确 与 错误, 不会提示原因。

2. 阅读性较差,如果不会正则的人,是看不懂的额。

先来学习正则常用的规则吧,后面写一个正则的使用详尽提示 (反正正则使用起来很方便)

这里写一些常用的 并做一些解释:

字符类
[abc]	a、b 或 c(简单类)  -- 如果用中括号abc,就表示字符串中的某一位,只能是a或者b或者c

比如正则为: [abc]
那么: 
    a    -- 正确
    b    -- 正确
    c    -- 正确        
     其他全部错误

    public static void main(String[] args) {
        String regex = "[abc]";
        String str = "a";
        // true
        System.out.println(str.matches(regex));
    }



[^abc]	任何字符,除了 a、b 或 c(否定)    -- 也就是说,除了abc都可以

比如正则为: [^09123abc]     -- 也就是说,除了09123abc这些字符,其他都可以

    public static void main(String[] args) {
        String regex = "[^09123abc]";
        String str = "a";
        // false
        System.out.println(str.matches(regex));
    }


剩下的不想写了,我感觉 https://blog.csdn.net/chuxin_mm/article/details/85061213
上面那篇博客,我已经解释的很清楚了

不过正则里面的 ()  |  &  []  {} 是有范围的:
[] : 表示的是一个范围的一个字符
() :  表示的是一组规则的一个字符
{} : 表示的是一个规则的字符个数
|  : 表示并集的意思
&  : 表示交集的意思
^  : 行的开头   (我不习惯用这个,和下面这个。应该是正则还没有理解到位吧)
$  : 行的结尾

 

写一个例子:

只能分开写,一起写还是比较困难
public static void main(String[] args) {
        /**
         * 不能以0开头
         * 只能是数字
         * 5-15位
         * 至少有4个0
         */
        判断前3个条件
        System.out.println("11101011001".matches("[1-9][0-9]{4,14}"));
        判断最后一个条件
        System.out.println("11101011001".matches("[1-9]\\d*([1-9]+0|0){4,}\\d*"));
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值