• Java正则表达式之账号检验与判断基础


    考虑到此时读者不知道何为正则表达式:

    我需要验证一个字符串是否符合qq号码的规则,我们采取已有知识进行验证

    1. import java.util.Scanner;
    2. public class Main{
    3. public static void main(String[] args){
    4. //正则表达式理解为一种规则
    5. //这种规则就是用来校验字符串的,校验数据格式的合法性
    6. //核心思想:先把异常数据进行过滤,然后再考虑正常数据
    7. Scanner sc = new Scanner(System.in);
    8. System.out.println("请输入一个qq号码");
    9. String number = sc.next();
    10. Boolean flag = checkQQ(number);
    11. System.out.println("qq号码"+flag);
    12. }
    13. public static boolean checkQQ(String qq) {
    14. //6-20位,0不能在开头,必须全部是数字
    15. int len = qq.length();
    16. if (len < 6 || len > 20) {
    17. return false;
    18. }
    19. char c = qq.charAt(0);
    20. if (c == 0) {
    21. return false;
    22. }
    23. for (int i = 0; i < len; i++) {
    24. char d = qq.charAt(i);
    25. if (d < '0' || d > '9') {
    26. return false;
    27. }
    28. }
    29. return true;
    30. }
    31. }

    这样写的逻辑是复杂的,较为浪费时间,因此我们选择采用API正则表达式来完成工作

    1. import java.util.Scanner;
    2. public class Main{
    3. public static void main(String[] args){
    4. //正则表达式理解为一种规则
    5. //这种规则就是用来校验字符串的,校验数据格式的合法性
    6. //核心思想:先把异常数据进行过滤,然后再考虑正常数据
    7. Scanner sc = new Scanner(System.in);
    8. System.out.println("请输入一个qq号码");
    9. String number = sc.next();;
    10. boolean match = number.matches("[1-9]\\d{5,19}");
    11. System.out.println("qq号码"+match);
    12. }

    接下来我们补充一些正则表达式的判断条件

    1. import java.util.Scanner;
    2. public class Main{
    3. public static void main(String[] args){
    4. //正则表达式理解为一种规则
    5. //这种规则就是用来校验字符串的,校验数据格式的合法性
    6. //核心思想:先把异常数据进行过滤,然后再考虑正常数据
    7. //我们可以粗略的将正则表达式的作用分成两个方向:
    8. //a:校验字符串是否满足规则
    9. //b:在一段文本中查找满足要求的内容
    10. //正则表达式规则:
    11. //在正则表达式中[]代表一种范围
    12. // [abc] 意味着字符串只能出现abc
    13. // [^abc] 意味着除了abc以外的所有字符
    14. // [a-zA-Z]a到z A到Z包括范围
    15. // [a-d[m-p]]a到d或者m到p
    16. // [a-z&&[def]] a-z和def的交集为 def
    17. // [a-z&&[^bc]] a-z与非bc的集合
    18. System.out.println("------------------1----------------");
    19. System.out.println("a".matches("[abc]"));//true
    20. System.out.println("z".matches("[abc]"));//false
    21. System.out.println("------------------2----------------");
    22. System.out.println("a".matches("[^abc]"));//false
    23. System.out.println("z".matches("[^abc]"));//true
    24. System.out.println("zz".matches("[^abc]"));//false
    25. System.out.println("zz".matches("[^abc][^abc]"));//true
    26. //预定义的字符
    27. // . 匹配任何字符
    28. // \d 一个数字[0-9]
    29. // \D 非数字:[^0-9]
    30. // \s 一个空白字符
    31. // \转义字符 改变后面后面字符原本的含义
    32. System.out.println("\"\"");//这里在""后面加一个\的时候 ""的特殊含义就被去掉了
    33. //表示任何一个字符 .
    34. System.out.println("你".matches(".."));//false
    35. System.out.println("你".matches("."));//true
    36. System.out.println("你a".matches(".."));//true
    37. // \\d是任意一位数字
    38. System.out.println("a".matches("\\d"));//不行 是一位非数字
    39. System.out.println("3".matches("\\d"));//可以 是一位且数字
    40. System.out.println("333".matches("\\d"));//不行 不是一位数字
    41. // \\w是一位单词字符
    42. System.out.println("z".matches("\\w"));//true
    43. System.out.println("2".matches("\\w"));//true
    44. System.out.println("21".matches("\\w"));//false
    45. System.out.println("你".matches("\\w"));//false
    46. // 非单词字符 \\W
    47. System.out.println("你".matches("\\W"));//true
    48. System.out.println("——————————————————————————");
    49. //必须是数字 字母 下划线 六位
    50. System.out.println("2442fsfsf".matches("\\w{6,}"));
    51. }
    52. }

  • 相关阅读:
    如何使用mysqldump快速复制Mysql数据库操作实践
    Steam流用法:将list集合中具有相同属性的对象放入到一个新的list
    【c++提高1】最大流(超详细图解)
    第十二章,集合类例题
    前端html+css面试题
    opencv+tesseract完成验证码识别(识别率99.99%)
    风靡全国的真人猫抓老鼠是什么?
    周少剑,很少见
    对非均匀采样信号进行重采样
    edusoho兑换码功能二次开发
  • 原文地址:https://blog.csdn.net/qq_37511412/article/details/134542520