正则表达式简介和使用(Java)

目录

简介

正则表达式 – 简介 | 菜鸟教程

元字符介绍

字符匹配符

限定符

定位符

选择匹配符

常用的几个正则表达式

正则表达式匹配原理

Java Demo

●Pattern类

●Matcher类

匹配汉字、邮政编码、QQ号码和手机号码

匹配合法的URL


简介

正则表达式是 字符串模式匹配 的技术,一般在使用的时候都会写一个 模式串,比如regStr,然后在s串中找和regStr相匹配的串, 比如查找一个html文本中的某些关键字段的值,比如浏览量,点赞量等;或者说判断s串符不符合regStr的格式要求,也就是校验字符串,判定字符串是否合法,比如是不是邮箱,是不是电话号码等。

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

各个语言中都会有正则表达式的应用,下面会有Java的Demo。

正则表达式 – 简介 | 菜鸟教程

元字符介绍

字符匹配符

ea8637ac898cdc18cdcfea15edcda2c6.png

限定符

主要用来限定字符 (组合) 出现的次数

注意 [] 和 () 含义是不一样的, ()里面的字符要作为一个整体被使用,[] 是可选的列表。

定位符

结尾限定符是针对整个字符串

选择匹配符

常用的几个正则表达式

[a-z] // 匹配所有的小写字母 
[A-Z] // 匹配所有的大写字母 
[a-zA-Z] // 匹配所有的字母 
[0-9] // 匹配所有的数字 

[\u4e00-\u9fa5] // 匹配中文字符

[1-9]\d{5} // 邮政编码

腾讯QQ号:[1-9][0-9]{4,9} (腾讯QQ号从10000开始)

密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

正则表达式匹配原理

浅谈正则表达式原理 - 知乎

详解正则表达式匹配算法原理_ybdesire的博客-CSDN博客_正则表达式匹配原理

 

Java Demo

java.util.regex包主要包括 Pattern类和Matcher类。

●Pattern类

pattern对象是一个正则表达式对象。Pattern类没有公共构造方法。要创建一个Pattern对
象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第
一个参数,比如:Pattern pattern = Pattern.compile(regStr);

●Matcher类

Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern类一样,Matcher也没有
公共构造方法。你需要调用Pattern对像的matcher方法来获得一个Matcher对像

匹配汉字、邮政编码、QQ号码和手机号码


public class RegExpDemo {
    public static void main(String[] args) {
        String content = "一二三四五";
        //        String content = "";
        // 汉字
        String reg = "^[\u4e00-\u9fa5]+$"; // 至少有一个汉字字符
        Pattern pattern = Pattern.compile(reg);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }

        // 邮政编码格式  注:满足格式不一定就是邮政编码
        String regyzCode = "^[1-9]\\d{5}$"; // 1 打头 有6位
        
        // qq 号格式  不能0打头 有长度限制
        String regQQCode = "^[1-9]\\d{4,9}$";

        //手机号码
        String phoneNumber = "17857917309";
        String regPhoneCode = "^1[3|4|5|8]\\d{9}$";

        pattern = Pattern.compile(regPhoneCode);
        matcher = pattern.matcher(phoneNumber);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }

    }
}

匹配合法的URL


public class RegExpDemo {
    public static void main(String[] args) {
        //        String content = "https://www.bilibili.com/video/BV1Eq4y1E79W?p=17&spm_id_from=pageDriver&vd_source=aa9ba225f33182b05cbf71";
        String content = "https://blog.csdn.net/dalei9243/article/details/84835895";
        // http/https :// 
        // 只有英文 数字 不允许有 中文字符 
        // 长度限制 不同浏览器不一样

        String reg = "^(http(s)?://)?([\\w-]+\\.)+[\\w-]+(/[\\w-?=&/%.#]*)$";

        Pattern pattern = Pattern.compile(reg);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trigger333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值