正则表达式

测试网址:https://regex101.com/
参考视频:参考视频网站

  1. ? : 表示前一个字符可以出现0次或1次
    如a?可以匹配啊a,空格

  2. * : 表示前一个字符可以出现0次到多次
    a*会匹配a,aaa,空格

  3. + : 会匹配出现1次以上的字符
    a+会匹配a,aa

  4. {} : 表示出现的范围
    {6} 表示前一个字符出现6次
    {2,6} 表示前一个字符出现2到6次
    {2,} 表示前一个字符出现2次以上

  5. () : 匹配多个字符
    (ab)+ : 匹配ab出现一次以上的字符;

  6. | : 或运算符
    a (cat|dog) :
    会先匹配a空格后面接cat或者dog
    这里的括号如果不加的话会不同,会匹配a cat 或者 dog

  7. [] : 可以匹配由相关字母组成的字符串
    [abc]+ : 会匹配由abc组成的字符串,如aabbcc.abc
    [a-zA-Z0-9] : 表示匹配小写字母,大写字母,数字组成的字符串
    [^0-9] : 表示可以匹配所有的非数字字符

  8. 元字符:正则表达式为了方便定义的一些常用的
    \d : 表示数字字符
    \w : 单词字符(英文数字下划线)
    \s : 空白符(空格,tab,换行符)
    \D : 非数字字符
    \W : 非单词字符
    \S : 非空白字符
    . : 表示任意字符(不包括换行符),如果要包括换行符使用[.\n]
    ^ : 匹配行首,如^a只会匹配行首的a
    $ : 匹配行尾,a$只会匹配行尾的a

  9. 贪婪匹配和懒惰匹配
    贪婪匹配:尽可能多地匹配字符
    懒惰匹配:尽可能少地匹配字符
    如有字符串 <html>abcd</html>
    我们想去匹配两侧的html标识,会写出<.+>但是就会发现会把整个字符串匹配起来
    这是因为.是可以匹配任意字符的,而字符串的开头和结尾正好为<>所以会匹配整个字符串;
    这时我们使用<.+?>就会把贪婪匹配转换为懒惰匹配
    这时就只会匹配到开头和结尾的html标识了;

  10. 实例讲解

  • 匹配RGB颜色值:
    #[a-fA-F0-9]{6}\b
    意思:#开头,可以为字母a-f,A-F,0-9的6位字符串,最后使用\b表示边界;
  • IP地址的匹配
    解释:用^开头,用$结尾,因为每一段的范围为0-255
public static boolean validIPAddress(String ip) {
        if (ip == null) {
            return false;
        }
        //个位数/1-9开头的两位数/1开头的3位数/2开头的分两种
        String regex0 = "(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
        //.代表任意字符所以用\.,将所有情况拼起来
        String regexIpv4 = regex0 + "(\\." + regex0 + "){3}";
        return ip.matches(regexIpv4);
    }
  1. Android中的使用

匹配手机号:
解释:1开头,第二位为3,4,5,7,8
因为\d为中的\为特殊字符,所以为\d,然后九位的数字字符,即一共11位

  public static boolean validPhoneNumber(String number) {
        if (number == null) {
            return false;
        }
        //1开头,第二位为34578,其余9位随意
        String regex0 = "^1[3|4|5|7|8]\\d{9}$";
        return number.matches(regex0);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值