目录
1.Java基本介绍
2.JDK下载安装及其环境配置
3.一个简单的java程序
4.Eclipse基本使用、数据类型、运算符
5.控制语句(if、switch、for、while、foreach)
6.Java数组
7.Java字符串对象(String|StringBuffer|StringBuilder|StringJoiner)
8.Java面向对象
9.正则表达式
10.Java包装类
11.日期与时间
12.异常(throwable)
13.Java日志处理
14.Java集合框架(Collection)
15.Java多线程
16.JavaIO数据流
17.Java枚举(Enum)
18.Java泛型
19.JavaClass类和Java反射
20.JDBC操作数据库
21.Java网络通信
22.Java注解
23.Java1.8新特性
24.Java函数式编程
正则表达式
正则表达式就是一个描述规则的字符串,所以,只需要编写正确的规则,就可以让正则表达式引擎去判断目标字符串是否符合规则
正则表达式是一套标准,它可以用于任何语言。Java标准库的java.util.regex包内置了正则表达式引擎,在Java程序中使用正则表达式非常简单
(1)定义了字符串的模式,用字符串来描述规则,并用来匹配字符串
匹配规则:从左到右按规则匹配
(2)可以用来搜索、编辑或处理文本
(3)并不仅限于某一种语言,但是在每种语言中有细微的差别
在Java中,\表示:插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义
Java中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在Java的正则表达式中,两个\代表其他语言中的一个\,这也就是为什么表示一位数字的正则表达式是\d,而表示一个普通的反斜杠是\\
java.util.regex包主要类(三个)
(1)Pattern类(Pattern.compile())
Pattern对象:一个正则表达式的编译表示,作用在于编译正则表达式后创建一个匹配模式
Pattern类没有public构造方法。要创建一个Pattern对象,必须首先调用其公共静态编译方法,返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数
Stringstr="service@xsoftlab.net";//要验证的字符串//邮箱验证规则StringregEx="[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";//①编译正则表达式Patternpattern=Pattern.compile(regEx);//②忽略大小写的写法Patternpattern=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);//使用Matcher对象,判断字符串是否与正则表达式相匹配Matchermatcher=pattern.matcher(str);booleanrs=matcher.matches();
静态方法
方法 | 描述 |
---|---|
staticPatterncompile(Stringregex) | 将给定的正则表达式编译为模式 |
staticPatterncompile(Stringregex,intflags) | 将给定的正则表达式编译为带有给定标志的模式 |
staticbooleanmatches(Stringregex,CharSequenceinput) | 编译给定的正则表达式,并尝试匹配给定的输入 |
staticStringquote(Strings) | 返回指定的String的文字模式String |
成员方法
方法 | 描述 |
---|---|
Matchermatcher(CharSequenceinput) | 创建一个匹配器,匹配给定的输入与此模式 |
intflags() | 返回此模式的匹配标志 |
Stringpattern() | 返回编译此模式的正则表达式 |
String[]split(CharSequenceinput) | 将给定的输入序列分成这个模式的匹配 |
String[]split(CharSequenceinput,intlimit) | 将给定的输入序列分成这个模式 |
StreamsplitAsStream(CharSequenceinput) | 根据给定的输入序列创建一个流,该流与该模式匹配 |
PredicateasPredicate() | 创建可用于匹配字符串的谓词 |
StringtoString() | 返回此模式的字符串表示形式 |
(2)Matcher类(Pattern.matcher())
Matcher对象:对字符串进行解释和匹配操作的引擎
Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配
与Pattern类一样,Matcher也没有公共构造方法。需要调用Pattern实例对象的matcher()来获得一个Matcher对象
//要验证的字符串Stringstr="baike.xsoftlab.net";//正则表达式规则StringregEx="baike.*";//编译正则表达式Patternpattern=Pattern.compile(regEx);//忽略大小写的写法Patternpattern=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);Matchermatcher=pattern.matcher(str);//查找字符串中是否有匹配正则表达式的字符/字符串booleanrs=matcher.find();
成员方法
方法 | 描述 |
---|---|
booleanmatches() | 对整个目标字符展开匹配检测。也就是只有整个目标字符串完全匹配时才返回true |
booleanlookingAt() | 将输入序列从区域开头开始与模式相匹配。只有匹配到的字符串在最前面才会返回true |
booleanfind() | 尝试找到匹配模式的输入序列的下一个子序列 |
booleanfind(intstart) | 重新设置该匹配器,然后尝试从指定的索引开始找到匹配模式的输入序列的下一个子序列 |
intstart() | 返回当前匹配到的字符串在原目标字符串中的位置 |
intstart(intgroup) | 返回给定组在上一个匹配操作期间捕获的子序列的开始索引 |
intstart(Stringname) | 返回给定捕获的子序列的初始索引named-capturinggroup以前的匹配操作期间 |
intend() | 返回最后一个字符匹配后的偏移量 |
intend(intgroup) | 返回在上次匹配操作期间由给定组捕获的子序列的最后一个字符之后的偏移量 |
intend(Stringname) | 返回给定捕获子序列的最后一个字符之后的偏移量named-capturinggroup以前的匹配操作期间 |
Stringgroup() | 返回匹配到的子字符串 |
Stringgroup(intgroup) | 返回在上一次匹配操作期间由给定组捕获的输入子序列 |
Stringgroup(Stringname) | 返回给定捕获的输入子序列named-capturinggroup以前的匹配操作期间 |
(3)PatternSyntaxException(异常)
PatternSyntaxException是一个非强制异常类,表示一个正则表达式模式中的语法错误
PatternSyntaxException(Stringdesc,Stringregex,intindex)构造一个这个类的新实例
方法 | 描述 |
---|---|
StringgetDescription() | 检索错误的描述 |
intgetIndex() | 检索错误索引 |
StringgetMessage() | 返回一个多行字符串,其中包含语法错误及其索引的描述,错误的正则表达式模式以及模式中错误索引的可视指示 |
StringgetPattern() | 检索错误的正则表达式模式 |
通配符
模式 | 描述 |
---|---|
\w | 匹配字母、数字、下划线 |
\W | 匹配非字母、数字、下划线 |
\s | 匹配任意空白字符,相当于[\t\n\r\f] |
\S | 匹配任意非空字符 |
\d | 匹配任意数字,相当于[0-9] |
\D | 匹配非数字的字符 |
\A | 匹配字符串开头 |
\Z | 匹配字符串结尾,如果存在换行,只匹配到换行前的结束字符串 |
\z | 匹配字符串结尾,如果存在换行,同时还会匹配换行符 |
\G | 匹配最后匹配完成的位置 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
^ | 匹配一行字符串的开头 |
$ | 匹配一行字符串的结尾 |
. | 匹配任意字符,除了换行符 |
[^…] | 不在[]中的字符,比如[^abc]匹配除了a、b、c之外的字符 |
* | 匹配0个或多个表达式 |
匹配1个或多个表达式 | |
? | 匹配0个或1个前面的正则表达式定义的片段,非贪婪方式 |
() | 匹配括号内的表达式,也表示一个组 |
{n} | 精确匹配n个前面的表达式,比如\d{n},代表n个数字 |
{n,m} | 匹配n到m次由前面正则表达式定义的片段,贪婪方式 |
常用正则表达式
规则 | 正则表达式语法 |
---|---|
一个或多个汉字 | ^[\u0391-\uFFE5]$ |
邮政编码 | ^[1-9]\d{5}$ |
QQ号码 | ^[1-9]\d{4,10}$ |
邮箱 | ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}.){1,3}[a-zA-z-]{1,}$ |
用户名 | ^[A-Za-z][A-Za-z1-9_-]$字母开头数字/字母/下划线 |
手机号码 | ^1[3|4|5|8][0-9]\d{8}$ |
URL | ^((http|https)://)?([\w-].)[\w-](/[\w-./?%&=]*)?$ |
18位身份证号 | ^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$ |