JAVA api--正则表达式

目录

一、 什么是正则表达式:

二、为什么要使用正则表达式:

1、 匹配字符集:

2、 “否”符号:

3、圆括号和空白符号:

4、“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符。


一、 什么是正则表达式:

正则表达式是由普通字符(如英文字母)以及特殊字符(也称为元字符)组成的文字模式。该模式对文本查找时需要匹配的一个或多个字符串描述,给出一个匹配模板。

二、为什么要使用正则表达式:

  正则表达式可以大大简化文本识别工作,现已超出了某种语言或某个系统的局限,成为被人们广为使用的工具。

正则 : 对字符串的匹配,判断是否是某种格式

正则表达式也是一段字符串,里面放的是匹配的规则

正则规则:
  \d 数字
  \D 非数字
  \w 数字+英文+下划线
  \W 非数字+英文+下划线
  \s 空格
  \S 非空格

正则中的特殊符号
  ? 0-1次
  + 最少一次
  * 任意次
  . 任意字符

简介:

1、 匹配字符集:

匹配字符集是预定义的用于正则表达式中的符号集。如果字符串与字符集中的任何一个字符相匹配,它就会找到这个匹配项。

正则表达式举例:

正则表达式举例
非负整数:        “^\d+$ ”
正整数:          “ ^[0-9]*[1-9][0-9]*$” 
非正整数:        “ ^((-\d+)|(0+))$” 
整数:            “ ^-?\d+$” 
英文字符串:      “ ^[A-Za-z]+$” 
英文字符数字串:  “ ^[A-Za-z0-9]+$” 
英数字加下划线串:“^\w+$” 
E-mail地址:      “^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” 
URL:             “^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”

2、 “否”符号:

“^”符号称为“否”符号。

如果用在方括号内,“^”表示不想要匹配的字符。

例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。

3、圆括号和空白符号:

假设要从格式为“June 26, 1951”的生日日期中提取出月份部分,用来匹配该日期的正则表达式

4、“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符。

如果字符串正确匹配,接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组

  String str="";
        
        // 匹配英文名字 Join|join|marry
        /**
        str="Join";
        if(str.matches("Join|join|marry")) {
            System.out.println("对的");
        }else {
            System.out.println("错的");
        }
        **/
        
        // 用户名:只能是英文 6~12 位
        /**
        str="yrfdASAfaaff";
        System.out.println(str.matches("[a-zA-Z]{6,12}"));
        **/
        
        // 用户名:只能是数字 6~12位(不能以0开始)
        /**
        str="0324311";
        System.out.println(str.matches("[1-9][0-9]{5,11}"));
        **/
        
        // 用户名:英文+数字+下划线 6~12位(必须以字母开头)
        /**
        str="a0324311_";
        System.out.println(str.matches("[a-zA-Z][a-zA-Z0-9_]{5,11}"));
        **/
        
        // 匹配密码:6位的数字 不能以0开头
        /**
        str="1231316";
        System.out.println(str.matches("[1-9]\\d{5}"));
        **/
       
     // 匹配用户名:
        // 必须英文,数字,下划线的字符  
        // 长度在3-4之间
        // 必須以 admin 或者 sa 開頭
        /**
        str="admin123";
        System.out.println(str.matches("(admin|sa)\\w{3,4}"));
        **/
        
        // 1-50位并且只能是字母或数字
        //  System.out.println(str.matches("[0-9a-zA-Z]{1,50}");
        
        // 密码8-16位且可以是数字与字母的组合
        //  System.out.println(str.matches("[0-9a-zA-Z]{8,16}");
        
        // 正则中的特殊符号
        // ? 0-1次
        // + 最少一次
        // * 任意次
        // . 任意字符
        
        // 密码8-16位且是数字与字母的组合
        // (必须有数字+字母)
        //  System.out.println(str.matches("[a-zA-Z0-9]{8,16}");
        
        // 匹配用户名:
        // 必须是abcdefg02468中的字符组成
        // 长度在6位以上
        //  System.out.println(str.matches("[a-g02468]{6,}");
        
        // 匹配abcdefg 选择一个或0个
        //  System.out.println(str.matches("[a-g]?");
        
        // 匹配一个任意的数字
        // 避免负数
        // 避免0打头的
        /**
        str = "123";
        System.out.println(str.matches("0|-?[1-9]\\d*"));
        **/
        
        // 匹配小数
        /**
        str = "123.0";
        boolean f = str.matches("\\d+[.]\\d+");
        System.out.println(f);
        **/
        
        // 匹配负小数
        // -?\\d+[.]\\d+
        
        // 匹配邮箱: @ .
        // 123@qq.com
        // www.123@qq.com
        /**
        str = "123@qq.com";
        boolean f = str.matches("(\\w+[.])?\\w+@\\w+[.](gov|net|cn|com)");
        System.out.println(f);
        **/
        
        // 月份 1-12
        // 1-9  -> [1-9]
        // 10-12  -> 1[0-2]
        /**
        str = "13";
        boolean f = str.matches("[1-9]|1[0-2]");
        System.out.println(f);
        **/
        
        // 匹配日期 1-31
        // 1-9  -> [1-9]
        // 10-29  -> [1-2][0-9]
        // 30-31  -> 3[0-1]
        /**
        str = "13";
        boolean f = str.matches("[1-9]|[1-2][0-9]|3[0-1]");
        System.out.println(f);
        **/
        
        // 匹配年龄 1-150
        // 1 - 9        [1-9]
        // 10 - 99      [1-9]\d
        // 100 - 149     1[0-4]\d
        // 150            150
        
        //[1-9]|[1-9]\d|1[0-4]\d|150
        
        // 匹配手机号码
        // 位数:11
        // 1开头 2位:3456789
        
        // 1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}

希望能够给各位带来一点帮助,其中如有错误还请多多指教,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值