正则表达式

目录

正则表达式

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

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

数量词


正则表达式

正则表达式(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])
        //只能是a   b    c   (匹配一个字符)
        System.out.println("a".matches("[abc]"));//ture
        System.out.println("z".matches("[abc]"));//false
        System.out.println("ab".matches("[abc]"));//false
        System.out.println("ab".matches("[abc][abc]"));//ture
        System.out.println("------------------------");
        //不能是a   b    c   (匹配一个字符)
        System.out.println("a".matches("[^abc]"));//false
        System.out.println("z".matches("[^abc]"));//ture
        System.out.println("zz".matches("[^abc]"));//false
        System.out.println("zz".matches("[^abc][^abc]"));//ture
        //a-z A-Z (匹配一个字符)
        System.out.println("------------------------");
        System.out.println("a".matches("[a-zA-Z]"));//ture
        System.out.println("z".matches("[a-zA-Z]"));//ture
        System.out.println("aa".matches("[a-zA-Z]"));//false
        System.out.println("zz".matches("[a-zA-Z]"));//false
        System.out.println("zz".matches("[a-zA-Z][a-zA-Z]"));//ture
        System.out.println("0".matches("[a-zA-Z0-9]"));//ture
        System.out.println("------------------------");
        //[a-d[m-p]]  a到d或者m到p
        System.out.println("a".matches("[a-d[m-p]]"));//ture
        System.out.println("d".matches("[a-d[m-p]]"));//ture
        System.out.println("m".matches("[a-d[m-p]]"));//ture
        System.out.println("p".matches("[a-d[m-p]]"));//ture
        System.out.println("e".matches("[a-d[m-p]]"));//false
        System.out.println("0".matches("[a-d[m-p]]"));//false
        System.out.println("------------------------");
        //[a-z&&[def]]
        //a-z和def的交集。为: d, e, f
        //如果要求两个范围的交集,那么需要写符号&&
        //如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号
        System.out.println("a".matches("[a-z&[def]]"));//ture
        System.out.println("&".matches("[a-z&[def]]"));//ture
        System.out.println("&".matches("[a-z&&[def]]"));//false
        System.out.println("a".matches("[a-z&&[def]]"));//false
        System.out.println("0".matches("[a-z&&[def]]"));//false
        System.out.println("d".matches("[a-z&&[def]]"));//ture
        System.out.println("------------------------");
        //[a-z&&[^bcd]]  a-z和bc的交集(等于[ae-z])
        System.out.println("a".matches("[a-z&&[^bcd]]"));//ture
        System.out.println("f".matches("[a-z&&[^bcd]]"));//ture
        System.out.println("b".matches("[a-z&&[^bcd]]"));//false
        System.out.println("0".matches("[a-z&&[^bcd]]"));//false
        System.out.println("------------------------");
        //[a-z&&[^m-p]]  a-z和除了m到p的交集(等于[a-lq-z])
        System.out.println("a".matches("[a-z&&[^m-p]]"));//ture
        System.out.println("m".matches("[a-z&&[^m-p]]"));//false
        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]一个非单词字符
        // .表示任意一个字符
        System.out.println("你".matches("."));//ture
        System.out.println("你".matches(".."));//false
        System.out.println("你a".matches(".."));//ture
        System.out.println("--------------------");
        //  \\d 表示任意的一个数字
        //  \\d 只能是任意的以为数字
        // 两个\表示一个\
        System.out.println("a".matches("\\d"));//false
        System.out.println("3".matches("\\d"));//ture
        System.out.println("1".matches("\\d"));//ture
        System.out.println("11".matches("\\d"));//false
        System.out.println("--------------------");
        //   \\w只能是一位单词字符[a-zA-Z_0-9]
        System.out.println("a".matches("\\w"));//ture
        System.out.println("1".matches("\\w"));//ture
        System.out.println("aa".matches("\\w"));//false
        System.out.println("你".matches("\\w"));//false
        System.out.println("_".matches("\\w"));//ture
        System.out.println("--------------------");

        //非单词字符
        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次
        //必须是数字字母下划线至少6位
        System.out.println("qwe1111".matches("\\w{6,}"));//ture
        System.out.println("qwe".matches("\\w{6,}"));//false
        System.out.println("------------------");
        //必须是数字和字符  4位
        System.out.println("1234".matches("[a-zA-Z0-9]{4}"));//ture
        System.out.println("12a_".matches("[a-zA-Z0-9]{4}"));//false
        System.out.println("1234".matches("[\\w&&[^_]]{4}"));//ture
        System.out.println("123_".matches("[\\w&&[^_]]{4}"));//false

手机号正则

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

座机号正则

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

邮箱号正则

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

24小时正则

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

身份证正则

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

密码验证

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

jQuery时间转换

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








 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值