目录结构

  • 一、简介
  • 二、相关符号
    • 1)单个符号
    • 2)次数符号
    • 3)快捷字符
  • 三、常用的正则表达式
  • 四、正则表达式的常见操作
    • 1)匹配
    • 2)切割
    • 3)替换
    • 4)获取
  • 五、邮箱格式验证实例
  • 六、正则表达式在线生成代码工具

一、简介

正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)。描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二、相关符号

1)单个符号

符号 用法与含义
^ 匹配输入字符串开始的位置
$ 匹配输入字符串结尾的位置
. 匹配单个任意字符,如Ja.a,可以匹配Java但不能匹配Javva
中括号[] 匹配单个字符,但只能匹配括号中指定的字符,如ja[vr]a,jara合法
| 符号 或,和中括号[]类似,匹配指定的字符,但可以不是单个,如r(a|b|c|dd)n
^符号 表示否,如[^0—9]即不匹配数字

2)次数符号

以下符号是匹配其前面的子表达式出现的次数:

符号 次数
* 0次或者多次
+ 1次或者多次
? 0次或者1次
{n} 刚好n次
{n,} 至少匹配n次
{n,m} n次到m次

举个栗子:

o{2}与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。
o{1,}等效于o+
o{0,}等效于o*
o{0,1}'等效于 o?

3)快捷字符

符号 含义
\d 匹配一个数字字符,等价于 [0-9]
\D 匹配一个非数字字符,等价于 [^0-9]
\w 匹配字母、数字、下划线,等价于[A-Za-z0-9_]
\W 等价于[^A-Za-z0-9_]
\s 空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格
\S 匹配任何非空白字符

更多字符可以参考菜鸟教程

三、常用的正则表达式

整理一些常见的正则表达式如下:

  • 汉字:^[\u4e00-\u9fa5]{0,}$
  • 长度为3-20的所有字符:^.{3,20}$
  • Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
  • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • InternetURL:[a-zA-z]+://[^\s]* 或 ^https://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
  • 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • IP地址:\d+.\d+.\d+.\d+
  • 中国邮政编码:[1-9]\d{5}(?!\d)
  • 腾讯QQ号:[1-9][0-9]{4,}

其余的表达式可以参考这里

四、正则表达式的常见操作

java中的正则表达式,建议多研究pattern类 和 matcher类

import java.util.regex.Matcher;
import java.util.regex.Pattern;

1)匹配

方法:

  • public boolean matches(String regex)

举例:

public static void checkQQ(){String qq = "123456789abc";String regex = "[1-9]\\d{4,14}";boolean flag = qq.matches(regex);if(flag)System.out.println(qq+"合规");elseSystem.out.println(qq+"不合规");}
//不合规

2)切割

方法:

  • public String[] split(String regex)

举例:

  public static void splitTest(){String str = "摸 鱼 写 博 客";//按照多个空格来进行切割String reg = " +";String[] arr = str.split(reg);  System.out.println(arr.length);//用加强for循环遍历for(String s : arr){System.out.println(s);}}

3)替换

方法:

  • public String replaceAll(String regex,String replacement)
  • replaceFirst 替换首次匹配,replaceAll 替换所有匹配

举例:

public static void replaceAllTest(){String str = "java123456Regular6543210Expression";//注意String regex = "\\d";和\\d{5,}的区别String regex = "\\d{5,}";str = str.replaceAll(regex,"#");System.out.println(str);}
// java#Regular#Expression

4)获取

方法:

  • 将正则表达式封装成对象。
  • 让正则对象和要操作的字符串相关联。
  • 关联后,获取正则匹配引擎。
  • 通过引擎对符合规则的子串进行操作,比如取出。

举例:

public static void getTest(){String str = "mo yu xie bo ker";String regex = "\\b[a-z]{3}\\b";//匹配只有三个字母的单词//将规则封装成对象。Pattern p = Pattern.compile(regex);//让正则对象和要作用的字符串相关联。获取匹配器对象。Matcher m  = p.matcher(str);//将规则作用到字符串上,并进行符合规则的子串查找。boolean b = m.find();while(b){//获取匹配后结果。System.out.println(m.group());// start()  字符的开始下标(包含)//end()  字符的结束下标(不包含)System.out.println(m.start()+"...."+m.end());                }}        

五、邮箱格式验证实例

以常见的邮箱格式为例:

  • 由a~z的英文字母(不区分大小写)开头
  • 可由英文字母、0~9的数字、点、减号或下划线组成
  • @左侧长度为1~20个字符
  • 不能以点、减号结尾

代码实现:

public static boolean isValidEmail(String email) {if ((email != null) && (!email.isEmpty())) {//定义邮箱格式的正则表达式String regex = "^(\w+([-.][A-Za-z0-9]+)*){1,20}@\w+([-.][A-Za-z0-9]+)*\.\w+([-.][A-Za-z0-9]+)*$";//返回格式验证结果return Pattern.matches(regex, email);}return false;}

六、正则表达式在线生成代码工具

懒人直接走这儿:正则表达式在线生成代码工具

写完刚好五点半,下班了伙计们!

Java 正则表达式的用法与实例相关推荐

  1. java正则表达式的用法_Java 正则表达式的使用

    Java 正则表达式的使用 1:正则表达式语法大全 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.例如,"n"匹配字符"n".&quo ...

  2. JAVA正则表达式高级用法(分组与捕获)

    2019独角兽企业重金招聘Python工程师标准>>> 正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下 ...

  3. java resultset 映射到实例_[Java]ResultSet的用法与实例

    JDBC API 2.0/3.0中ResultSet记录集的简便实用的新特性 1 新定义了若干个常数 这些常数用于指定ResultSet 的类型游标移动的方向等性质,如下所示: public stat ...

  4. [Java]ResultSet的用法与实例

    JDBC API 2.0/3.0中ResultSet记录集的简便实用的新特性 1 新定义了若干个常数 这些常数用于指定ResultSet 的类型游标移动的方向等性质,如下所示: public stat ...

  5. Java正则表达式简单用法

    1.简单查找 String target="var tips=\"认证成功<br>用户名:XXXX<br>IP地址:1.1.1.1\"" ...

  6. Java—List的用法与实例详解

    List特点和常用方法 List是有序.可重复的容器. 有序指的是:List中每个元素都有索引标记.可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素. 可重复指的是:List ...

  7. JS正则表达式常见用法实例详解

    这篇文章主要介绍了JS正则表达式常见用法,结合实例形式分析了javascript元字符.分组符.修饰符.量词基本含义,并结合具体案例形式分析了javascript正则基本使用技巧,需要的朋友可以参考下 ...

  8. JAVA正则表达式实例教程(转帖收藏)

    So many open source projects. Why not Open your Documents? 1 JAVA正则表达式实例教程 12/11/2008 1.正则表达式的知识要点 1 ...

  9. Java正则表达式--Matcher.group函数的用法

    https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...

  10. java正则表达式用法示例_Java正则表达式教程及示例

    java正则表达式用法示例 当我开始使用Java时,正则表达式对我来说是一场噩梦. 本教程旨在帮助您掌握Java正则表达式,并让我定期返回以刷新我的正则表达式学习. 什么是正则表达式? 正则表达式定义 ...

最新文章

  1. 谈 Kubernetes 的架构设计与实现原理
  2. 请你介绍下Logistic回归模型?
  3. BZOJ4921「Lydsy1706月赛」互质序列
  4. JavaWeb学习总结(十三)——使用Session防止表单重复提交
  5. 最新进展概述:澄清式提问辅助理解信息检索中的用户意图
  6. 【转】Kotlin 新版来了,支持跨平台!
  7. VirtualBox扩容失败-Progress state: VBOX_E_NOT_SUPPORTED
  8. mycat mysql 主从_Mycat实现Mysql主从读写分离
  9. html5实现留言功能,javascript实现留言板功能
  10. 再谈内核模块加载(二)—模块加载流程(上)
  11. 计算机算法应用状况,详解机器学习中的现状,算法,应用
  12. 留学回国人员申办上海常住户口实施细则
  13. 实时互联网的隐形风口
  14. 推荐系统:CTR模型学习总结--LR、FM、FFM、Wide and Deep、DeepFM
  15. 饿了吗html模板,饿了么.html
  16. 产业分析:股权激励市场实践
  17. 单细胞文献学习(part6)--ForestFireClustering for sc sequencing combines iterative label propagation with ...
  18. 国产开发板各项性能测试--米尔MYD-YT507H开发板
  19. 极狐GitLab CI 月来袭!2小时 get CI 流水线设计秘籍
  20. GB28181协议实现系列之----PS流封装(6)

热门文章

  1. fataexception matlab,人工势场法路径规划(附MAtlab程序)
  2. 幅频特性曲线的绘制(2)
  3. win10共享打印机怎么设置_怎样设置打印机共享?
  4. 使用官网支持工具制作富士施乐打印机一键安装的程序
  5. 各大市场应用上架整理
  6. UWB源码资料 研创物联源码资料 可二次开发 dwm1000模块 双边双向测距
  7. vscode终端中文乱码问题的解决方案合集c++
  8. 关于MATLAB中使用latex语法
  9. 【LKJ】LKJ弧形限速小结
  10. 有限元分析简介及伽辽金法