考虑到此时读者不知道何为正则表达式:
我需要验证一个字符串是否符合qq号码的规则,我们采取已有知识进行验证
import java.util.Scanner;public class Main{public static void main(String[] args){//正则表达式理解为一种规则//这种规则就是用来校验字符串的,校验数据格式的合法性//核心思想:先把异常数据进行过滤,然后再考虑正常数据Scanner sc = new Scanner(System.in);System.out.println("请输入一个qq号码");String number = sc.next();Boolean flag = checkQQ(number);System.out.println("qq号码"+flag);}public static boolean checkQQ(String qq) {//6-20位,0不能在开头,必须全部是数字int len = qq.length();if (len < 6 || len > 20) {return false;}char c = qq.charAt(0);if (c == 0) {return false;}for (int i = 0; i < len; i++) {char d = qq.charAt(i);if (d < '0' || d > '9') {return false;}}return true;}
}
这样写的逻辑是复杂的,较为浪费时间,因此我们选择采用API正则表达式来完成工作
import java.util.Scanner;public class Main{public static void main(String[] args){//正则表达式理解为一种规则//这种规则就是用来校验字符串的,校验数据格式的合法性//核心思想:先把异常数据进行过滤,然后再考虑正常数据Scanner sc = new Scanner(System.in);System.out.println("请输入一个qq号码");String number = sc.next();;boolean match = number.matches("[1-9]\\d{5,19}");System.out.println("qq号码"+match);
}
接下来我们补充一些正则表达式的判断条件
import java.util.Scanner;public class Main{public static void main(String[] args){//正则表达式理解为一种规则//这种规则就是用来校验字符串的,校验数据格式的合法性//核心思想:先把异常数据进行过滤,然后再考虑正常数据//我们可以粗略的将正则表达式的作用分成两个方向://a:校验字符串是否满足规则//b:在一段文本中查找满足要求的内容//正则表达式规则://在正则表达式中[]代表一种范围// [abc] 意味着字符串只能出现abc// [^abc] 意味着除了abc以外的所有字符// [a-zA-Z]a到z A到Z包括范围// [a-d[m-p]]a到d或者m到p// [a-z&&[def]] a-z和def的交集为 def// [a-z&&[^bc]] a-z与非bc的集合System.out.println("------------------1----------------");System.out.println("a".matches("[abc]"));//trueSystem.out.println("z".matches("[abc]"));//falseSystem.out.println("------------------2----------------");System.out.println("a".matches("[^abc]"));//falseSystem.out.println("z".matches("[^abc]"));//trueSystem.out.println("zz".matches("[^abc]"));//falseSystem.out.println("zz".matches("[^abc][^abc]"));//true//预定义的字符// . 匹配任何字符// \d 一个数字[0-9]// \D 非数字:[^0-9]// \s 一个空白字符// \转义字符 改变后面后面字符原本的含义System.out.println("\"\"");//这里在""后面加一个\的时候 ""的特殊含义就被去掉了//表示任何一个字符 .System.out.println("你".matches(".."));//falseSystem.out.println("你".matches("."));//trueSystem.out.println("你a".matches(".."));//true// \\d是任意一位数字System.out.println("a".matches("\\d"));//不行 是一位非数字System.out.println("3".matches("\\d"));//可以 是一位且数字System.out.println("333".matches("\\d"));//不行 不是一位数字// \\w是一位单词字符System.out.println("z".matches("\\w"));//trueSystem.out.println("2".matches("\\w"));//trueSystem.out.println("21".matches("\\w"));//falseSystem.out.println("你".matches("\\w"));//false// 非单词字符 \\WSystem.out.println("你".matches("\\W"));//trueSystem.out.println("——————————————————————————");//必须是数字 字母 下划线 六位System.out.println("2442fsfsf".matches("\\w{6,}"));}}