正则表达式
在开发中,通常很多数据都会使用String类存储。原因:操作字符串的功能比较多,比较方便。
在操作String类对象时,会经常遇到对字符串进行验证的功能,而按照我们之前学习的String类,我们使用String类中的诸多函数是可以完成对字符串校验功能的,但是代码相对来说比较麻烦,所以在Java中引入正则表达式的概念来解决上述问题。
正则表达式:专门用于操作字符串的技术,并且可以简化代码,用于对字符串的复杂操作。
正则表达式弊端:代码可读性比较差。
正则表达式使用
案例:验证QQ号码是否合法。
分析:
1、第一位不能是零;
2、QQ号码在5到12之间(包含);
3、QQ号码都是由数字组成;
步骤:
1、定义一个RegexDemo类,在这个类中定义一个主函数main和一个自定义函数method_1;
2、在main函数中调用自定义函数method_1;
3、在自定义函数method_1中定义一个字符串变量QQ,并赋值为12345;
4、使用if-elseIf-else结构对字符串QQ分别按照上述给定的三个条件进行判断;
5、使用String类中的charAt()函数获取字符串QQ中的第一个字符和字符0进行比较,相等则告诉用户不能以0开始;
6、使用String类中的length()函数获得字符串QQ的长度,判断是否在5~12之间;
7、验证字符串QQ中是否都是数字,使用Long.parseLong(QQ)把一个字符串转成 long 类型的数据,此函数容易发生异常,所以使用try-catch代码块对该代码进行捕获异常处理;
在开发中字符串是我们使用频率最高的一类数据,针对上述程序仅仅就是为了验证一个字符串中的数据是否正确,用上述代码能够解决问题,但是代码很麻烦。在计算机语言中针对这类数据的验证和其他操作给出了更加简单的处理方案。
这个方案就是正则表达式。正则表达式它的存在就是用来简化代码的书写,方便完成对字符串的操作。
如何编写正则表达式?
1、[]:表示正则表达式可以写的内容
如:[1-9]:表示字符串中第一位能够出现1~9任何一个数字;
2、{}:表示用来规定位数
如:[0-9]{4,11}:表示字符串中从第2位开始后面的数字只能出现0~9之间的数字,并且最少出现4次,最多出现11次;
3、正则表达式格式以^开头 以 $结尾
4、String类中提供一个matches()函数,可以判断字符串对象是否匹配正则表达式
正则表达式常用符号介绍(掌握)
在api中有正则表达式的符号介绍:
我们使用正则表达式其中一个重要的功能就是验证字符串中每个字符是否正确:
学习怎么写一个正则表达式去匹配(验证)字符串的每一位。
正则表达式符号介绍:正则表达式一般也需要使用字符串进行展示:
1、一般符号
\ : 表示反斜线 例:“\”在正则中就是“\”
\t :制表符。相当于tab键。
2、给出某个位置上可以出现的多个字符
[ ]表示范围的意思。表示某一位上可以出现的字符数据,如果正则中需要匹配 的某个字符串中某一位上的字符是唯一的,这时可以省略中括号。
[abc] 表示要么是a要么是b还可以是c(只能是其中任意一个)
例:”NBA” 正则:”N[ABC]A” 匹配正确:NBA NAA NCA
[^abc] 当前要匹配的某个字符串中的某一位上不能是a 或b 或c(除了a,b,c 都可以)
[a-z] 表示26个小写字母
[A-Z] 表示26个大写字母
[a-zA-Z] 表示26个大小写字母
[a-d[m-p]] 当前要匹配的某个字符串中的某一位上 可以是a -d 或 m - p 的字 符
[a-d&&[d-f]] 表示只能是d。必须在两个范围中都要符合 。(交集)
[a-d&&[^d-f]] 表示只能是a,b,c
[a-z&&[^xyz]] 表示只能是除去x,y,z后的所有小写字母
[0-9] 表示0~9之间任意数字
3、提前定义好的一些符号,可以代替上述的[]书写的范围