• 正则表达式


    目录

    正则表达式

    字符类(只匹配一个字符):

    预定义字符(只匹配一个字符)

    数量词


    正则表达式

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

    正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

    作用:

    1、校验字符串是否满足规则

    2、在一段文本中查找满足要求的内容

    字符类(只匹配一个字符):

    [abc]只能是a, b,或c
    [^abc]除了a, b, c之外的任何字符
    [a-zA-Z]a到zA到Z,包括(范围)
    [a-d[m-p]]a到d,或m到p
    [a-z&&[def]a-z和def的交集。为:d, e, f
    [a-z&&[^bc]]a-z和非bc的交集。(等同于[ad-z])
    [a-z&&[^m-p]]a到z和除了m到p的交集。(等同于[a-lq-z])
    1. //只能是a b c (匹配一个字符)
    2. System.out.println("a".matches("[abc]"));//ture
    3. System.out.println("z".matches("[abc]"));//false
    4. System.out.println("ab".matches("[abc]"));//false
    5. System.out.println("ab".matches("[abc][abc]"));//ture
    6. System.out.println("------------------------");
    7. //不能是a b c (匹配一个字符)
    8. System.out.println("a".matches("[^abc]"));//false
    9. System.out.println("z".matches("[^abc]"));//ture
    10. System.out.println("zz".matches("[^abc]"));//false
    11. System.out.println("zz".matches("[^abc][^abc]"));//ture
    12. //a-z A-Z (匹配一个字符)
    13. System.out.println("------------------------");
    14. System.out.println("a".matches("[a-zA-Z]"));//ture
    15. System.out.println("z".matches("[a-zA-Z]"));//ture
    16. System.out.println("aa".matches("[a-zA-Z]"));//false
    17. System.out.println("zz".matches("[a-zA-Z]"));//false
    18. System.out.println("zz".matches("[a-zA-Z][a-zA-Z]"));//ture
    19. System.out.println("0".matches("[a-zA-Z0-9]"));//ture
    20. System.out.println("------------------------");
    21. //[a-d[m-p]] a到d或者m到p
    22. System.out.println("a".matches("[a-d[m-p]]"));//ture
    23. System.out.println("d".matches("[a-d[m-p]]"));//ture
    24. System.out.println("m".matches("[a-d[m-p]]"));//ture
    25. System.out.println("p".matches("[a-d[m-p]]"));//ture
    26. System.out.println("e".matches("[a-d[m-p]]"));//false
    27. System.out.println("0".matches("[a-d[m-p]]"));//false
    28. System.out.println("------------------------");
    29. //[a-z&&[def]]
    30. //a-z和def的交集。为: d, e, f
    31. //如果要求两个范围的交集,那么需要写符号&&
    32. //如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号
    33. System.out.println("a".matches("[a-z&[def]]"));//ture
    34. System.out.println("&".matches("[a-z&[def]]"));//ture
    35. System.out.println("&".matches("[a-z&&[def]]"));//false
    36. System.out.println("a".matches("[a-z&&[def]]"));//false
    37. System.out.println("0".matches("[a-z&&[def]]"));//false
    38. System.out.println("d".matches("[a-z&&[def]]"));//ture
    39. System.out.println("------------------------");
    40. //[a-z&&[^bcd]] a-z和bc的交集(等于[ae-z])
    41. System.out.println("a".matches("[a-z&&[^bcd]]"));//ture
    42. System.out.println("f".matches("[a-z&&[^bcd]]"));//ture
    43. System.out.println("b".matches("[a-z&&[^bcd]]"));//false
    44. System.out.println("0".matches("[a-z&&[^bcd]]"));//false
    45. System.out.println("------------------------");
    46. //[a-z&&[^m-p]] a-z和除了m到p的交集(等于[a-lq-z])
    47. System.out.println("a".matches("[a-z&&[^m-p]]"));//ture
    48. System.out.println("m".matches("[a-z&&[^m-p]]"));//false
    49. System.out.println("0".matches("[a-z&&[^m-p]]"));//false

    预定义字符(只匹配一个字符)

    .任何字符
    \d一个数字:[0-9]
    \D非数字:[^0-9]
    \s一个空白字符:[\t\n\xOB\f\r ]
    \S非空白字符:[^\s]
    \w[a-zA-Z_0-9]英文、数字、下划线
    \w[^\w]一个非单词字符
    1. // .表示任意一个字符
    2. System.out.println("你".matches("."));//ture
    3. System.out.println("你".matches(".."));//false
    4. System.out.println("你a".matches(".."));//ture
    5. System.out.println("--------------------");
    6. // \\d 表示任意的一个数字
    7. // \\d 只能是任意的以为数字
    8. // 两个\表示一个\
    9. System.out.println("a".matches("\\d"));//false
    10. System.out.println("3".matches("\\d"));//ture
    11. System.out.println("1".matches("\\d"));//ture
    12. System.out.println("11".matches("\\d"));//false
    13. System.out.println("--------------------");
    14. // \\w只能是一位单词字符[a-zA-Z_0-9]
    15. System.out.println("a".matches("\\w"));//ture
    16. System.out.println("1".matches("\\w"));//ture
    17. System.out.println("aa".matches("\\w"));//false
    18. System.out.println("你".matches("\\w"));//false
    19. System.out.println("_".matches("\\w"));//ture
    20. System.out.println("--------------------");
    21. //非单词字符
    22. System.out.println("你".matches("\\W"));//ture

    数量词

    X?X,一次或0次
    X*X,零次或多次
    X+X,一次或多次
    X{n}X,正好n次
    X{n, }X,至少n次
    X{n,m}X,至少n但不超过m次
    1. //必须是数字字母下划线至少6
    2. System.out.println("qwe1111".matches("\\w{6,}"));//ture
    3. System.out.println("qwe".matches("\\w{6,}"));//false
    4. System.out.println("------------------");
    5. //必须是数字和字符 4
    6. System.out.println("1234".matches("[a-zA-Z0-9]{4}"));//ture
    7. System.out.println("12a_".matches("[a-zA-Z0-9]{4}"));//false
    8. System.out.println("1234".matches("[\\w&&[^_]]{4}"));//ture
    9. System.out.println("123_".matches("[\\w&&[^_]]{4}"));//false

    手机号正则

    1. //拿着一个正确的数据,从左到右依次去写。
    2. //分成三部分:
    3. //第一部分:1表示手机号码只能以1开头
    4. //第二部分:[3-9]表示手机号码第二位只能是3-9之间的
    5. //第三部分: \\d{9}表示任意数字可以出现9次,也只能出现9
    6. String str = "1[3-9]\\d{9}";
    7. System.out.println("13578763675".matches(str));//ture
    8. System.out.println("135787636".matches(str));//false

    座机号正则

    1. //座机电话号
    2. //020-2324242 02122442 027-42424 0712-3242434
    3. // 思路:
    4. //在书写座机号正则的时候需要把正确的数据分为三部分
    5. // 一: 区号0\\d{2,3}
    6. // 0:表示区号一定是以0开头的
    7. // \\d{2,3}:表示区号从第二位开始可以是任意的数字,可以出现23次。
    8. //二: - ?表示次数,0次或一次
    9. //三: 号码的第一位也不能以0开头,从第二位开始可以是任意的数字,号码的总长度:5-10
    10. String str1 = "0\\d{2,3}-?[1-9]\\d{4,9}";
    11. System.out.println("020-2324242".matches(str1));
    12. System.out.println("02122442".matches(str1));
    13. System.out.println("027-42424".matches(str1));
    14. System.out.println("0712-3242434".matches(str1));

    邮箱号正则

    1. // 邮箱号码
    2. // 3232323@qq.com zhangsan@itcast.cnn dleie0009@163.com dlei0000@pci.com.cn
    3. // 思路:
    4. //在书写邮箱号码正则的时候需要把正确的数据分为三部分
    5. // 第一部分:@的左边 \\w+
    6. // 任意的字母数字下划线,至少出现一次就可以了
    7. //第二部分:@只能出现一次
    8. //第三部分:
    9. //3.1.的左边[\\w&&[^_]]{2,6}
    10. // 任意的字母加数字,总共出现2-6次(此时不能出现下划线)
    11. //3.2 . \\.
    12. //3.3 大写字母,小写字母都可以,只能出现2-3次[a-zA-Z]{2,3}
    13. // 我们可以把3.23.3看成一组,这一组可以出现1次或者两次
    14. String str2 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
    15. System.out.println("3232323@qq.com".matches(str2));//ture
    16. System.out.println("zhangsan@itcast.cnn".matches(str2));//ture
    17. System.out.println("dleie0009@163.com".matches(str2));//ture
    18. System.out.println("dlei0000@pci.com.cn".matches(str2));//ture

    24小时正则

    1. //24小时的正则表达式
    2. String str3 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
    3. System.out.println("14:25:22".matches(str3));
    4. String str4 = "([01]\\d|2[0-3])(:[0-5]\\d){2}";
    5. System.out.println("14:25:22".matches(str4));

    身份证正则

    1. //4108011993 02 28 457x
    2. //前面6位:省份,市区,派出所等信息瞭第一位不能是0,后面5位是任意数 [1-9]\\d{5}
    3. //年的前半段: 18 19 20 (18|19|20)
    4. //年的后半段: 任意数字出现两次 \\d{2}
    5. //月份:01 ~ 09 10 11 12 (0[1-9]|1[0-2])
    6. //日期:01 ~ 09 10~19 20~29 30 31 (0[1-9]|[12]\\d|3[01])
    7. //后面四位: 任意数字出现3次 最后一位可以是数字也可以是大写X或者小写x \\d{3}[\\dXx]
    8. String str5 = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]";
    9. System.out.println("412721200505123418".matches(str5));

    密码验证

    1. //要求一、
    2. //1.密码必须由字母、数字、特殊符号组成,区分大小写
    3. //2.特殊符号包含(. _ ~ ! @ # $ ^ & *
    4. //3.密码长度为8-20
    5. //实现:
    6. //(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,20}
    7. String str6 = "(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,20}";
    8. System.out.println("q125611@".matches(str6));//ture

    jQuery时间转换

    1. //时间转换
    2. function getLocalTime(time) {
    3. var date = new Date(time);
    4. Y = date.getFullYear() + '-';
    5. M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    6. D = date.getDate() + ' ';
    7. h = date.getHours() + ':';
    8. m = date.getMinutes() + ':';
    9. s = date.getSeconds();
    10. return Y + M + D + h + m + s;
    11. }








     

  • 相关阅读:
    java生成随机数的三种写法
    新手程序员怎么接单?
    功能测试:核心原理、挑战以及解决之道
    RabbitMQ之ttl(过期消息)解读
    c++的多态,继承,抽象类,虚函数表,虚函数等题目+分析
    jenkins的安装
    【德哥说库系列】-Oracle 19C PDB创建大全
    科学计算三维可视化笔记(第七周 运算)
    JAVASE 游戏
    基于SpringBoot+vue+elementui在线教育系统详细设计实现
  • 原文地址:https://blog.csdn.net/qi341500/article/details/128112488