当前位置: 首页 > news >正文

Java:正则表达式讲解加举例,简洁易懂

正则表达式定义:

由一些特定的字符组成,代表的是一个规则。

作用:1.校验数据是否合法。2.可以在一段文本中查找满足要求的内容。

先自己写一个方法去校验qq号,比较与正则表达式的区别:

正则表达式的代码暂时可以不去理解。

package com.itheima.d2_regex;
/*
* 需求:校验qq号是否正确,要求全部是数字,长度6-20之间,qq号不能以0开头。
*/
public class RegexTest1 {public static void main(String[] args) {System.out.println(checkQQ(null));//falseSystem.out.println(checkQQ("12345697"));//trueSystem.out.println(checkQQ("45158481d22"));//falseSystem.out.println("-------------------------------------");System.out.println(checkQQ(null));//falseSystem.out.println(checkQQ("12345697"));//trueSystem.out.println(checkQQ("45158481d22"));//false}//正则表达式校验  暂时可以不用理解其中的代码   明显正则表达式更简洁public static boolean checkQQ1(String qq){return qq != null && qq.matches("[1-9]\\d{5,19}");}//自己写方法去判断public static boolean checkQQ(String qq){//判断qq号码是否为null,长度符合要求,是否为以0开头。if (qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){return false;}//判断qq号中全是数字for (int i = 0; i < qq.length(); i++) {char ch = qq.charAt(i);//根据索引提取字符(charAt())if (ch < '0' || ch > '9'){return false;}}return true;}
}

明显正则表达式更简洁更好用。

正则表达式深度解析:

String类提供了一个匹配正则表达式的方法:

public boolean matches(String regex) //判断字符串是否匹配正则表达式

讲解加举例全在里面:

package com.itheima.d2_regex;public class RegexTest2 {public static void main(String[] args) {//1.字符类(只能匹配单个字符)  [abc]  3选1  [^abc] 不能是abc其一  [a-zA-Z] 只能是a-z A-Z 之间的字符//[a-z&&[^bc]] a到z,除了bc//举例:System.out.println("b".matches("[a-zA-Z]"));//true//2.预定义字符(只能匹配单个字符) . \d \D \s \S \w \W   大写跟小写的区别:取反// . 匹配任意字符  \d 0-9  \s 代表一个空白字符  \w 代表[a-zA-Z_0-9],包含大小写,下划线,0-9之间的数字。//举例://在Java中,\是有特殊用途的,例如特殊字符:\n  \t ,这是把\n \t当成整体一个字符看System.out.println("1".matches("\\d"));//这里我们希望\就是\,而不是整体\d,就需要转义字符\ 转义单个反斜杠//这里如果你用\d,会解析成整体,但是没有\d的具体意义,所以要用(第一个反斜杠)\把(第二个反斜杠) \  转义,这样\d就不会当成整体了。//输出true//3.数量词: ? 代表0次或者一次  * 代表0次或者多次  + 代表 1次或者多次  {n} 代表正好n次  {n,} 代表>=n次 {n,m} 代表>=n,<=m次//举例:System.out.println("abc232d".matches("\\w{3,9}"));//true//4.其他几个常用的符号:(?i)忽略大小写,固定写法  或:|  分组:()System.out.println("ABC".matches("(?i)abc"));//trueSystem.out.println("Abc".matches("a((?i)b)c"));//false  这个忽略大小写只针对于b而言,注意看范围即可。//需求:必须是“我爱”开头,中间至少有一个“编程”,最后至少一个“666”System.out.println("我爱编程编程666666".matches("我爱(编程)+(666)+"));//true  至少有一次(666)+,加号代表1次或者多次System.out.println("我爱编程编程6666666".matches("我爱(编程)+(666)+"));//false 这里666要成对出现,格式不对,所以false}
}

http://www.lryc.cn/news/285769.html

相关文章:

  • 2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解
  • ​WordPress顶部管理工具栏怎么添加一二级自定义菜单?
  • Linux安装ossutil工具且在Jenkins中执行shell脚本下载文件
  • Docker命令---搜索镜像
  • docker使用http_proxy配置代理
  • 综述:自动驾驶中的 4D 毫米波雷达
  • 蓝桥杯:1.特殊日期(Java)
  • 服务异步通讯之 SpringAMQP【微服务】
  • LED闪烁
  • php array_diff 比较两个数组bug避坑 深入了解
  • c++中STL的vector简单实现
  • C# 更改Bitmap图像色彩模式
  • 5.2 基于深度学习和先验状态的实时指纹室内定位
  • AIGC时代高效阅读论文实操
  • 对网站进行打点(不要有主动扫描行为)
  • 502. IPO(贪心算法+优先队列/堆)
  • 设计模式篇---中介者模式
  • 双端Diff算法
  • react+antd,Table表头文字颜色设置
  • 2024年1月18日Arxiv最热NLP大模型论文:Large Language Models Are Neurosymbolic Reasoners
  • 服务限流实现方案
  • 【RTOS】快速体验FreeRTOS所有常用API(1)工程创建
  • Red Hat Enterprise Linux 8.9 安装图解
  • vcruntime140.dll文件修复的几种常见解决办法,vcruntime140.dll丢失的原因
  • SpringCloud Alibaba 深入源码 - Nacos 分级存储模型、支撑百万服务注册压力、解决并发读写问题(CopyOnWrite)
  • 算法训练营Day45
  • 【Redis漏洞利用总结】
  • SPI 动态服务发现机制
  • 【C++进阶07】哈希表and哈希桶
  • Go 语言实现冒泡排序算法的简单示例