Java复习之正则表达式

本文介绍了Java中正则表达式的应用,包括基本概念、Pattern和Matcher类的使用方法及常见操作,通过多个实例展示了如何利用正则表达式进行字符串匹配、验证和替换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇博客主要是用来总结一下Java中的正则表达式。

1.认识正则

通过一个简单的程序来了解一下正则有哪些好处:

问题:判断一个字符串是否由数字组成

Demo:

 /**
        *不使用正则表达式判断一个字符串是否由数字组成
        */
        String s="0487561";
        //把字符串转换成字符数组
        char[] cs=s.toCharArray();
        boolean flag=true;
        for (int i=0;i<cs.length;i++)
        {
            if(!(cs[i]<='9'&&cs[i]>='0'))
            {
                flag=false;
                break;
            }
        }
        if(flag==true)
        {
            System.out.println("字符串由数字组成");
        }else
        {
            System.out.println("字符串不是由数字组成");
        }

2.正则表达式

正则表达式使用单个字符串来描述,匹配一系列符合某个句法规则的字
符串。正则表达式通常被用来检索、替换那些符合某个模式的文本

java.util.regex包中提供以下两个类,对正则表达式的支持:

Matcher类:
通过解释Pattern对character sequence执行匹配操作的引擎

Pattern类
正则表达式的编译表示形式。

Demo:

         /**
         * 使用正则表达式进行判断
         */
        if(s.matches("\\d+"))
        {
            System.out.println("字符串由数字组成");
        }
        else
        {
            System.out.println("字符串不是由数字组成");
        }

3.Pattern类

public final class Pattern extends
Object implements Serializable

正则表达式的编译表达形式。指定为字符串的正则表达式必须首先被编译为此类的实例

典型的调用顺序:
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();

4.Matcher类

public final class Matcher
extends Object
implements MatchResult

Matcher类的主要功能是用于进行正则的匹配,通过Pattern类中定
义完的正则,再使用Matcher类进行验证或者替换。

常用的方法:
boolean matches()
尝试将整个区域与模式匹配

String replaceAll(String replacement)
替换模式与给定替换字符串相匹配的输入序列的每个子序列

String replaceFirst(String replacement)
替换模式与给定替换字符串匹配的输入序列的第一个子序列

//匹配的英文符号
        String info="小白是个:高端大气上档次,低调奢华有内涵的人";
        //匹配字符串中的标点符号
        Pattern pattern =Pattern.compile("\\p{Punct}");
        //根据标点符号对字符串进行拆分
        String []str= pattern.split(info);
        for (String s:str) {
            System.out.println(s);
        }
        /**
         *  使用正则表达式匹配邮箱地址
         */
        String email="xiaobai@qq.com";
        Pattern pattern2 =Pattern.compile("\\w+@\\w+.[a-zA-Z]+");
        Matcher matcher=pattern2.matcher(email);
        if(matcher.matches())
        {
            System.out.println("匹配");
        }
        else {
            System.out.println("不匹配");
        }

        /**
         * 使用正则表达式替换字符
         */
        String date="2013/11/05";
        Pattern pattern3=Pattern.compile("/");
        Matcher m2=pattern3.matcher(date);
        String s2=m2.replaceAll("-");
        System.out.println(s2);

5.String类对正则的支持

在JDK1.4之后加入了正则,随后又更新了String的操作类,因为在
使用正则中,所有的内容通过字符串表示的比较多。在String类中有以下
的方法可以完成对正则表达式的支持:

boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式

String replaceAll(String regex,String replacement)
使用给定的replacement替换此字符串,所有匹配给定的正则表达式的子字符串

String replaceFirst(String regex,String replacement)
使用给定的replacement替换此字符串,匹配给定的正则表达式的第一个字符串

String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串

6.实例

1.验证电话号码(如:010-53517230)
2.验证手机号
3.验证用户名,只能是字母开头的数字、字母或下划线组成

/**
         * 匹配电话号码
         * 区号最少3位,最多4位 X[n,m] 至少n次,不超过m次
         */
        String phonenumber="010-53517230";
        boolean b=phonenumber.matches("\\d{3,4}-\\d{7,8}");
        if(b)
        {
            System.out.println("电话号码格式正确");
        }
        else
        {
            System.out.println("电话号码格式不正确");
        }
        /**
         * 验证手机号:
         * 要求:必须为11位,首位必须为1,第二位为3~9,之后的尾数随意
         */
        String phone="13143188844";
        System.out.println(phone.matches("[1][3-9]\\d{9}"));

        /**
         * 验证用户名,只能是字母开头的数字、字母或下划线组成
         * []表示在这个范围里面
         *  *表示0次或者多次
         *  +表示多次
         */
        String username="xb1314";
        System.out.println(username.matches("[a-zA-Z]+[\\w|_]*"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值