String对正则表达式的支持及应用

String对正则表达式的支持

  • 什么是正则表达式?
不是java的,是独立的体系,有自己的语法,java支持正则表达式
用正则表达式来描述一种格式
一些特殊的字符表示一些特定的语义
要求:
	能看懂简单的正则表达式
	会写一些简单的正则表达式
	职责范围:只能判断格式,不关注有效性
[] 一个字符
[a,b,c] a,b,c中的任意一个
[^abc] 除a,b,c以外的任意一个
[a-z] a-z中的任意一个
[a-zA-Z0-9] 所有字母和数字中的一个
[a-z&&[^be]] 在a-z中除了b和e以外的一个
. 任意一个字符
\d 任意一个数字
\w 任意一个单词字符[a-zA-Z0-9]
\s 空白字符
\D 非数字
\W 非单词字符
\S 非空白字符
x? 表示0个或者1个x
x+ 表示1个或者1个以上x
x* 表示任意个x
x{n} 表示有n个x
x{n,m} 表示有n-m个x
x{n,} 表示至少有n个x,没有上限
x{0,m} 表示有0至m个x
() 表示分组,可以将一系列正则表达式看做一个整体,分组时可以使用"|"表示或关系
边界匹配:
	^ 代表字符串开始
	$ 代表字符串结束

案例一:

public static void main(String[] args){
        //需要被屏蔽的敏感词汇
        String regex = "fuck";
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的评论");
        String con = sc.next();
        //替换某些字符 replace()
        con = con.replace(regex,"****");
        System.out.println(con);
		key.close();
}

案例二:

public static void mian(String[] args){
    //需要屏蔽的敏感词
    String regex = "fuck|tmd|cnm";
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入你的评论:");
    String con = sc.next();
    con = con,replaceAll(regex,"****");
    System.out.println(con);
    key.close()
}

案例三:

正则表达式用法:
一般用^开始,$表示结束
[1234]表示匹配1-4的数字
{3,16}表示3-16个内容
[^123]表示123以外的数字

public static void mian(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.pritln("请输入内容: ");
    String con = sc.nextLine();
    
    //*: 匹配0到多个
    //+: 匹配1到多个
    //?: 0或1
    //     String regex = "^[0-9]*$"
    //     String regex = "^\\d$"
    
    //匹配指定个数
    //"^[0-9]{8}$": 表示匹配8个数字
    //"^[0-9]{8,12}"表示匹配8-12个数字
    //匹配6-20位的密码,密码包含大小写字符,数字,下划线
    //   []--->|
    //   String regex = "^[a-zA-Z-9]{6,20}$"
    //
    //[^123]:匹配123以外的字符
    //    String regex = "^[^123]{3,6}$"
    //
    // +86 15071411484    
    // 0086 15071411484  
    //+86/0086:0次1次,用? 
    //空格:\s   
    //数字:\d   
    //表示11位:{11}  
    //():小括号表示分组    //  
    String regex = "^(\\+86|0086)?\\s\\d{3}$";
    //[]表示里面其中的一个   
    String regex = "^[\\+86|0086]?\\s\\d{3}$";
    if(con.matches(regex)) {   
        System.out.println("输入合理");   
    }else {    
        System.out.println("输入错误,回家吧");  
    } 
}

具体应用:

public class RegexDemo01{
        
        //输入字符str
        String str = sc.next();
        //标准字符串格式,在[0-9]之间的一个
        String regex1 = "^[0-9]+$";//输入 2|5|9, 结果合理
        //等价于String regex1 = "^\\d$";
        
        //+:匹配前面的子表达式一次或多次
        String regex2 = "[0-9]+";//输入 5|123,结果合理
        
        //匹配指定个数
        String regex3 = "^[0-9]{7}$";//表示匹配7个数字
        String regex4 = "^[0-9]{7,}$";//表示匹配至少7个数字
        String regex5 = "^[0-9]{7,9}$";//表示匹配7到9个数字
        
        //匹配6-20位的密码,密码可以包含大小写的字符a-z,0-9 _
        String regex6 = "^[a-zA-Z0-9_]{6,20}$";
        //选除去0-9之外的字符
        String regex7 = "^[^0-9]$";
        
        //手机号 +86 15837499657  0086 15837499657
        //+86 0086:0次或者1次     ? 
        //{}:表示位数   ():表示分组
        String regex8 = "^(\\+86\\s|0086\\s)?\\d{11}$"
        
        //匹配输入的字符是否符合标准字符
        if(str.matches(regex1)){
            System.out.println("输入合理");
        }else{
            System.out.println("输入不合理");
        }
        if(str.matches(regex2)){
            System.out.println("输入合理");
        }else{
            System.out.println("输入不合理");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值