目录
正则表达式(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;
- }