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

导读:本篇文章讲解 正则表达式简介和使用(Java),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

简介

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

元字符介绍

字符匹配符

限定符

定位符

选择匹配符

常用的几个正则表达式

正则表达式匹配原理

Java Demo

●Pattern类

●Matcher类

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

匹配合法的URL


简介

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

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

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

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

元字符介绍

字符匹配符

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

ea8637ac898cdc18cdcfea15edcda2c6.png

限定符

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

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

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

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

定位符

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

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

选择匹配符

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

常用的几个正则表达式

[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("不满足格式");
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92770.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!