Java正则表达式入门篇(一)

导语

正则表达式是一组描述字符串特征的字符,常用于检查某个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。各编程语言的正则表达式都有些许差别,本文主要讲解正则表达式在java语言中的简单应用,所以调用String对象的matches()方法判断是否匹配与否,并不使用Pattern类与Matche类及\d,\w等预定义字符,笔者会在入门篇(二)中介绍到。在阅读此篇时,建议对照正则表达式规则表阅读。正则表达式语法规则表

正则表达式的语法

标准语法:
	[匹配规则]{数量词}

环境准备

 Idea + JDK8 + regStr(正则表达式字符串) + testStr(测试字符串)

使用正则表达式完成单个确定字符检验

案例1:testStr中的字符只允许为a

中括号中只存在单个字符时,匹配规则就是该字符,
该案例字符只允许为a,且只允许单个字符,所以数量词是1,
所以其正则表达式为[a]{1}

Idea代码

public static void main(String[] args) {
    String regStr = "[a]{1}"; //正则表达式字符串
    String testStr = "a";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出
当数量词为1时“{1}”可省略 ,当字符确定时 “[]” 可省略,所以以上表达式还有种简化写法

public static void main(String[] args) {
 String regStr = "a"; //正则表达式字符串
    String testStr = "a";//测试字符串
    System.out.println(testStr.matches(regStr));
}

使用正则表达式完成单个不确定字符进行检验

案例1:testStr中的字符只允许为a b c 1 2 3中的一个

中括号存在多个字符时,匹配规则为中括号的所有字符,
该案例字符只允许为a b c 1 2 3其中一个字符,
所以匹配条件就是abc123,
所以其正则表达式为[abc123]

Idea代码

public static void main(String[] args) {
    String regStr = "[abc123]"; //正则表达式字符串
    String testStr = "2";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出
案例2:testStr中的字符只允许为a b c 1 2 3之外的任意字符

中括号中存在"^"时,中括号中的匹配规则取反,
该案例字符只允许为a b c 1 2 3外的任意字符,
所以匹配条件就是^abc123字符,
所以其正则表达式为[^abc123]

Idea代码

public static void main(String[] args) {
 String regStr = "[^abc123]"; //正则表达式字符串
    String testStr = "d";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出

控制台输出

案例3:testStr中的字符只允许为a-z或0-9中的字符

中括号中存在"-"时,匹配规则为被"-"连接的两个字符间的所有字符,
该案例字符只允许为a-z或0-9中的字符,
所以匹配条件就是a-z0-9字符,
所以其正则表达式为[a-z0-9]

Idea代码

public static void main(String[] args) {
 String regStr = "[a-z0-9]"; //正则表达式字符串
    String testStr = "c";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出

案例4:testStr中的字符只允许为a-f或B-H中的字符

当中括号中出现另一个中括号时,匹配规则为外层中括号中的匹配规则与内层中括号的匹配规则的并集,
该案例字符只允许a-f或者B-H中的字符,
所以匹配条件就是a-f和B-H字符,
所以其正则表达式为[a-f[B-H]]

Idea代码

public static void main(String[] args) {
 String regStr = "[a-f[B-H]]"; //正则表达式字符串
    String testStr = "C";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台代码
控制台输出

案例5:testStr中的字符只允许为a-f和b-z中共同存在的字符

当内层中括号前存在“&&”时,匹配规则为外层中括号中的匹配规则与内层中括号的匹配规则的交集,
该案例字符只允许为a-f和b-z中共同存在的字符,
所以匹配条件就是a-f和b-z字符,
所以其正则表达式为[a-f&&[b-z]]

Idea代码

public static void main(String[] args) {
 String regStr = "[a-f&&[b-z]]"; //正则表达式字符串
    String testStr = "f";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出

使用正则表达式完成多个确定字符进行检验

案例1:testStr中的字符只允许为aaa

中括号中只存在单个字符时,匹配条件就是该字符,
该案例字符只允许为aaa,
所以其正则表达式为[a]{3}

Idea代码

public static void main(String[] args) {
 String regStr = "[a]{3}"; //正则表达式字符串
    String testStr = "f";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出
当然以上代码也可以简写为

public static void main(String[] args) {
    String regStr = "a{3}"; //正则表达式字符串
    String testStr = "aaa";//测试字符串
    System.out.println(testStr.matches(regStr));
}

案例2:testStr中的字符只允许为aa1&&

该案例字符只允许为aa1&&,
所以其正则表达式为a{2}1&{2}

Idea代码

public static void main(String[] args) {
    String regStr = "a{2}1&{2}"; //正则表达式字符串
    String testStr = "aa1&&";//测试字符串
    System.out.println(testStr.matches(regStr));
}

使用正则表达式完成多个不确定字符进行检验

案例1:testStr中的字符长度至少为16,且必须以abc开头

在大括号中存在","时,逗号前的数量词代表该字符串的最小长度
所以其正则表达式为abc[.]{13, }

Idea代码

public static void main(String[] args) {
    String regStr = "abc.{13,}"; //正则表达式字符串
    String testStr = "abc123456@#$%^&*";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出
案例2:testStr中的字符只允许为130 135 177 181 182 199开头的手机号

该案例只允许为手机号 所以字符串长度为11位 且第一位只能为1
第二位只能为 3789 第三位只能取057129 所以还剩下8位数字
所以其正则表达式为1[3789][057129][0-9]{8}

idea代码

public static void main(String[] args) {
    String regStr = "1[3789][057129][0-9]{8}"; //正则表达式字符串
    String testStr = "13044375521";//测试字符串
    System.out.println(testStr.matches(regStr));
}

控制台输出
控制台输出
本博客文章转载,请注明出处

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

早川不爱吃香菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值