正则表达式语法

一、正则表达式的作用

① 校验字符串是否满足规则

② 在文本中查找满足要求的内容

二、基本规则

                         字符类

[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])

                         预定义字符

.                 任何字符
\d                一个数字:[0-9]
\D                非数字:[^O-9]
\s                一个空白字符:[\t\n\xOB\f\r]
\S                非空白字符:[^\s]
\w                [a-zA-Z_0-9]英文、数字、下划线
\W                [^\w]一个非单词字符
  
                          数量词

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("2442fsfsf" .matches( regex: "\\w{6,}")); //true
system.out.println("244f".matches( regex:"\\w{6,}"));//false

//必须是数字和字符必须是4位
system.out.print1n("23dF".matches( regex: "[a-zA-ZO-9]{4}"));//true
system.out.println("23_F".matches( regex: "[a-zA-Z0-9]{4}"));//false
system.out.println("23dF".matches( regex: "[\\w&&[^_]]{4}")); //true
system.out.print1n("23_F".matches( regex: "[\\w&&[^_]]{4]"));//falsel

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

// 13112345678/1分成三部分:
//第一部分:1表示手机号码只能以1开头
//第二部分:[3-9]表示子机号码第二位只能是3-9之间的
//第三部分: \\d{9}表示任意数字可以出现9次,也只能出现9次
String regex1 = "1[3-9]\\d{9}";
system.out.println( "13112345678".matches(regex1) ) ; //true
system.out.println( ""13712345667".matches(regex1) ) ;//true
system.out.println( "13945679027".matches(regex1)); //true
system.out.println("139456790271".matches(regex1) );//false



--------------------------------------------------------------------------------



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

//身份证号码的严格校验
//编写正则的小心得:
//第一步:按照正确的数据进行拆分
//第二步:找每一部分的规律,并编写正则表达式
//第三步:把每一部分的正则拼接在一起,就是最终的结果
//书写的时候:从左到右去书写。
//4108011993 02 28 457×
//前面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 regex6 = “[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.print1n( "41080119930228457x".matches(regex3));
system.out.print1n( "510801197609022309".matches( regex3));
system.out.println( "15040119810705387x".matches(regex3));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自xing且乐观~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值