接下来学习下正则表达式,其实还是属于字符串操作范围。正则表达式就是一个规则,能够描述一个字符串是否符合一定规则。在开发过程中,注册页面的用户名和密码长度限制,这里就需要使用正则。
题目:
分别用字符串操作方法和正则方法来判断给定的一个字符串是否是有效的QQ号码。QQ号码的规则是:1长度在5到15位的数字, 2.不能以数字0开头
1. 字符串相关方法的代码实现
我们需要写一个方法去判断是否是有效QQ号码,所以可以明确以下两点。
1)返回类型是布尔型
2)方法传入参数是String对象
虽然QQ都是数字号码组成,但是我们需要作为字符串去判断,因为字符串提供了以什么开头的判断和字符串长度的方法以及字符串转字符组数可以实现这个要求。
package regex;
public class Test_Regex {
public static void main(String[] args) {
System.out.println(checkQQ("12345"));
System.out.println(checkQQ("02345"));
System.out.println(checkQQ("123456"));
System.out.println(checkQQ("1a345"));
System.out.println(checkQQ("1234578901234567"));
}
public static boolean checkQQ(String qq) {
boolean flag = true; //定义一个标记
// 1.先对字符串长度是否符合判断
if(5 <= qq.length() && 15>= qq.length()) {
// 2.符合了 5-15位的长度,接下来判断是否0开头
if( !qq.startsWith("0")) {
// 3.接下来判断每一位上是不是数字,需要把字符串转换字符数组
char[] arr = qq.toCharArray();
// 4.变量字符数组,取出每一个字符去判断
for(int i=0; i < arr.length; i++) {
char c = arr[i]; //取出每一个字符
// 5.判断是否是数字字符
if(!(c >= '0' && c <= '9')) {
flag = false;
break;
}else {
flag = true;
}
}
}else {
flag = false;
}
}else {
flag = false;
}
return flag;
}
}
输出:
true
false
true
false
false
2.正则表达式方法实现
看了上面用普通的字符串操作去实现代码,发现逻辑很复杂,如果不是逻辑清晰,代码一步一步写下来,直接去抄写上面的代码是看不懂,肯定会看晕的感觉,因为条件分支判断太多了。下面用正则表达来处理,严格来说一行代码就可以搞定。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
String regex = "[1-9]\\d{4,14}";
System.out.println("123456".matches(regex));
System.out.println("023456".matches(regex));
System.out.println("123b456".matches(regex));
System.out.println("1234567890123456789".matches(regex));
}
}
输出:
true
false
false
false
通过对比两种方法,正则要简单明了很多,效率也高。所以我们很有必要学习正则表达式,几乎在任何语言中都有正则表达式,有些语法是通用的有些有区别。接下来,我们开始系统学习下正则表达式。