考虑到此时读者不知道何为正则表达式:
我需要验证一个字符串是否符合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]"));//true
- System.out.println("z".matches("[abc]"));//false
- System.out.println("------------------2----------------");
- System.out.println("a".matches("[^abc]"));//false
- System.out.println("z".matches("[^abc]"));//true
- System.out.println("zz".matches("[^abc]"));//false
- System.out.println("zz".matches("[^abc][^abc]"));//true
-
- //预定义的字符
- // . 匹配任何字符
- // \d 一个数字[0-9]
- // \D 非数字:[^0-9]
- // \s 一个空白字符
- // \转义字符 改变后面后面字符原本的含义
- System.out.println("\"\"");//这里在""后面加一个\的时候 ""的特殊含义就被去掉了
-
- //表示任何一个字符 .
- System.out.println("你".matches(".."));//false
- System.out.println("你".matches("."));//true
- System.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"));//true
- System.out.println("2".matches("\\w"));//true
- System.out.println("21".matches("\\w"));//false
- System.out.println("你".matches("\\w"));//false
- // 非单词字符 \\W
- System.out.println("你".matches("\\W"));//true
- System.out.println("——————————————————————————");
- //必须是数字 字母 下划线 六位
- System.out.println("2442fsfsf".matches("\\w{6,}"));
-
-
- }
-
- }