收藏这36个正则表达式,开发效率提高80%

简介: 我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。

写在前面

我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。

1、整数

d8566b2b02ca5bc6b0ec86dac6bbd5af.png

  public static final String intege = "^-?[1-9]\\d*$/";         //整数
  /**  正例 */
  System.out.println(Pattern.matches(intege,"123")); // true
  System.out.println(Pattern.matches(intege,"-123")); // true
  /**   反例 */
  System.out.println(Pattern.matches(intege,"abc")); // false
  System.out.println(Pattern.matches(intege,"0")); // false

2、正整数

bd03005be4e5b887ee827b0266a07d7d.png

  public static final String intege1 = "^[1-9]\\d*$/";          //正整数
  // 正例 
  System.out.println(Pattern.matches(intege1,"123")); // true
  //  反例 
  System.out.println(Pattern.matches(intege1,"-123")); // false
  System.out.println(Pattern.matches(intege1,"0")); // false

3、负整数

6f42d621fed5636f3003a18de39eeddf.png

  public static final String intege2 = "^-[1-9]\\d*$/";         //负整数
  // 正例 
  System.out.println(Pattern.matches(intege2,"-123")); // true
  // 反例 
  System.out.println(Pattern.matches(intege2,"123")); // false
  System.out.println(Pattern.matches(intege2,"0")); // false

4、数字

5ef5b29b54b4f0249fd005d8482b375a.png

  public static final String num = "^([+-]?)\\d*\\.?\\d+$/";      //数字
  // 正例 
  System.out.println(Pattern.matches(num,"123")); // true
  System.out.println(Pattern.matches("0")); // true
  // 反例 
  System.out.println(Pattern.matches(num,"a123")); // false

5、正数(正整数 + 0)

98816a3221a93835bf3b2c9d0ff9ea80.png

  public static final String num1 = "^[1-9]\\d*|0$/";         //正数(正整数 + 0)
  // 正例 
  System.out.println(Pattern.matches(num1,"123")); // true
  System.out.println(Pattern.matches(num1,"0")); // true
  // 反例 
  System.out.println(Pattern.matches(num1,"-123")); // false

6、负数(负整数 + 0)


4307a077478b9b90ad05c3344321dbaf.png

  public static final String num2 = "^-[1-9]\\d*|0$/";          //负数(负整数 + 0)
  // 正例 
  System.out.println(Pattern.matches(num2,"-123")); // true
  System.out.println(Pattern.matches(num2,"0")); // true
  // 反例 
  System.out.println(Pattern.matches(num2,"123")); // false

7、浮点数

24d5a3d61a0a805bc0c1069e6df3fd76.png


  public static final String decmal = "^([+-]?)\\d*\\.\\d+$/";      //浮点数
  // 正例 
  System.out.println(Pattern.matches(decmal,"-0.1")); // true
  System.out.println(Pattern.matches(decmal,"0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(decmal,"a.b")); // false

8、正浮点数


83d2e45111e5d7980e380088fd178acb.png

  public static final String decmal1 = "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$"; //正浮点数
  // 正例 
  System.out.println(Pattern.matches(decmal1,"0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(decmal1,"-0.1")); // false

9、负浮点数


cefb13a58cea43d60bb5f66901660206.png

  public static final String decmal2 = "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$"; //负浮点数
  // 正例 
  System.out.println(Pattern.matches(decmal2,"-0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(decmal2,"0.1")); // false

10、浮点数

cf22d8b14b5bd7903786bfb3a6332132.png

  public static final String decmal3 = "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$";//浮点数
  // 正例 
  System.out.println(Pattern.matches(decmal3,"-0.1")); // true
  System.out.println(Pattern.matches(decmal3,"0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(decmal3,"a.b")); // false

11、非负浮点数(正浮点数 + 0)


49f0bf837650781906e702d6d9eb2c7a.png


  public static final String decmal4 = "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$";  //非负浮点数(正浮点数 + 0)
  // 正例 
  System.out.println(Pattern.matches(decmal4,"0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(decmal4,"-0.1")); // false

12、非正浮点数(负浮点数 + 0)

828e98c0dbe96388198fd2dc884a32c4.png

  public static final String decmal5 = "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$"; //非正浮点数(负浮点数 + 0)
  // 正例 
  System.out.println(Pattern.matches(decmal5,"-0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(decmal5,"0.1")); // false

13、邮箱地址

2b34d57d205dc23e3c9fee1fff221557.png

  public static final String email = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"; //邮件
  // 正例 
  System.out.println(Pattern.matches(email,"tom@xxx.com")); // true
  // 反例 
  System.out.println(Pattern.matches(email,"tom.xxx.com")); // false

14、颜色值匹配


f2ccf10cd58136f806b292960841ce0d.png

  public static final String color = "^[a-fA-F0-9]{6}$";        //颜色
  // 正例 
  System.out.println(Pattern.matches(color,"ffffff")); // true
  System.out.println(Pattern.matches(color,"FFFFFF")); // true
  // 反例 
  System.out.println(Pattern.matches(color,"#FFFFFF")); // false
  System.out.println(Pattern.matches(color,"white")); // false

15、url匹配

534ec112739a0f600d1a953c527794a4.png

  public static final String url = "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-.\\/?%&=]*)?$"; //url
  // 正例 
  System.out.println(Pattern.matches(url,"http://www.xxx.com")); // true
  System.out.println(Pattern.matches(url,"https://www.xxx.com")); // true
  System.out.println(Pattern.matches(url,"www.xxx.com")); // true
  // 反例 
  System.out.println(Pattern.matches(url,"abcd")); // false

16、纯仅中文字符

ac6ca7d48ed2b250853e29142e3f377c.png

  public static final String chinese = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$";         //仅中文
  // 正例 
  System.out.println(Pattern.matches(chinese,"汤姆弹架构")); // true
  // 反例 
  System.out.println(Pattern.matches(chinese,"Tom弹架构")); // false

17、仅ACSII字符

a7c2f908307fb3f35fa3d257337b1e21.png

  public static final String ascii = "^[\\x00-\\xFF]+$";        //仅ACSII字符
  // 正例 
  System.out.println(Pattern.matches(ascii,"abc123")); // true
  // 反例 
  System.out.println(Pattern.matches(ascii,"にそ①②③")); // false

18、邮政编码

image.png

  public static final String zipcode = "^\\d{6}$";            //邮编
  // 正例 
  System.out.println(Pattern.matches(zipcode,"100000")); // true
  // 反例 
  System.out.println(Pattern.matches(zipcode,"1000000")); // false

19、国内手机号码

b74047f9cd69e7730f7a878149110946.png

  public static final String mobile = "^(13|15|16|17|18)[0-9]{9}$";       //手机
  // 正例 
  System.out.println(Pattern.matches(zipcode,"13800138000")); // true
  // 反例 
  System.out.println(Pattern.matches(zipcode,"19900010002")); // false

20、IP V4 地址

a5b00f8fb893b409e7aea68225ad88b7.png

  public static final String ip4 = "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$"; //ip地址
  // 正例 
  System.out.println(Pattern.matches(zipcode,"127.0.0.1")); // true
  // 反例 
  System.out.println(Pattern.matches(zipcode,"aa.bb.cc.dd")); // false

21、非空字符

37b080a649dfef00b10c21739622c92b.png

  public static final String notempty = "^\\S+$";           //非空
  // 正例 
  System.out.println(Pattern.matches(notempty,"  abc ")); // true
  // 反例 
  System.out.println(Pattern.matches(notempty,"")); // false

22、图片后缀

f42ce721aa2b02a79679e6fecaf5440f.png


  public static final String picture = "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga|JPG|BMP|GIF|ICO|PCX|JPEG|TIF|PNG|RAW|TGA)$"; //图片
  // 正例 
  System.out.println(Pattern.matches(picture,"tom.jpg")); // true
  // 反例 
  System.out.println(Pattern.matches(picture,"tom.txt"")); // false

23、音频后缀

4d103887c4c1c186e803e602219fe431.png

  public static final String audio = "(.*)\\.(mp3|wma|mid|midi|wav|vqf|MP3|WMA|MID|MIDI|WAV|VQF)$"; //音频
    // 正例 
  System.out.println(Pattern.matches(audio,"tom.mp3")); // true
  // 反例 
  System.out.println(Pattern.matches(audio,"tom.txt"")); // false

24、视频后缀


9301483906daf303b87a68ec69e04b1b.png


  public static final String video = "(.*)\\.(rm|3gp|mp4|rmvb|avi|wmv|flv|vob|exe|mkv|swf|RM|3GP|MP4|RMVB|AVI|WMV|FLV|VOB|EXE|MKV|SWF)$"; // 视频格式
  // 正例 
  System.out.println(Pattern.matches(video,"tom.mp4")); // true
  // 反例 
  System.out.println(Pattern.matches(video,"tom.txt"")); // false

25、压缩文件后缀

c598072738752ff7151c12308decde8c.png

  public static final String rar = "(.*)\\.(rar|zip|7zip|tgz|RAR|ZIP|7ZIP|TGZ)$"; //压缩文件
  // 正例 
  System.out.println(Pattern.matches(rar,"tom.zip")); // true
  // 反例 
  System.out.println(Pattern.matches(rar,"tom.txt"")); // false

26、日期格式

154fd4231afce11c8180e6677d9e023b.png

  public static final String date = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$"; //日期
  // 正例 
  System.out.println(Pattern.matches(date,"2024-10-24")); // true
  System.out.println(Pattern.matches(date,"2024/10/24")); // true
  // 反例 
  System.out.println(Pattern.matches(date,"2024年10月24日"")); // false

27、日期和时间格式

ab8130a21308dc9febcfe30f44abacf3.png

  public static final String datetime = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}(\\s\\d{2}:)?(\\d{2}:)?(\\d{2})?$"; //日期和时间
  // 正例 
  System.out.println(Pattern.matches(datetime,"2024-10-24 23:59:59")); // true
  System.out.println(Pattern.matches(datetime,"2024/10/24 23:59:59")); // true
  // 反例 
  System.out.println(Pattern.matches(datetime,"2024年10月24日 23时59分59秒"")); // false

28、QQ号码

f60e8a450ca31025ce3e272ae014d55c.png

  public static final String qq = "^[1-9]*[1-9][0-9]*$";    //QQ号码
  // 正例 
  System.out.println(Pattern.matches(qq,"123456")); // true
  // 反例 
  System.out.println(Pattern.matches(qq,"1234567890")); // false

29、电话号码的函数(包括验证国内区号,国际区号,分机号)

  public static final String tel = "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$";  //电话号码的函数(包括验证国内区号,国际区号,分机号)
  // 正例 
  System.out.println(Pattern.matches(tel,"010-1234567")); // true
  System.out.println(Pattern.matches(tel,"0100-12345678")); // true
  // 反例 
  System.out.println(Pattern.matches(tel,"13800138000")); // false

30、用户名注册

  public static final String username = "^[A-Za-z]\\w{5,}$";  //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
  // 正例 
  System.out.println(Pattern.matches(username,"xxxxtom")); // true
  // 反例 
  System.out.println(Pattern.matches(username,"tom@xxx")); // false

31、字母数字组合


  public static final String allstring = "^\\w+$"; //字母数字组合
  // 正例 
  System.out.println(Pattern.matches(allstring,"abc123")); // true
  // 反例 
  System.out.println(Pattern.matches(allstring,"abc123%^&")); // false

32、纯字母


  public static final String letter = "^[A-Za-z]+$";          //字母
  // 正例 
  System.out.println(Pattern.matches(letter,"abc")); // true
  // 反例 
  System.out.println(Pattern.matches(letter,"abc123")); // false

33、纯大写字母


  public static final String letter_u = "^[A-Z]+$";         //大写字母
  // 正例 
  System.out.println(Pattern.matches(letter_u,"ABC")); // true
  // 反例 
  System.out.println(Pattern.matches(letter_u,"abc")); // false

34、纯小写字母


  public static final String letter_l = "^[a-z]+$";         //小写字母
  // 正例 
  System.out.println(Pattern.matches(letter_l,"abc")); // true
  // 反例 
  System.out.println(Pattern.matches(letter_l,"ABC")); // false

35、第二代身份证号码匹配

  public static final String idcard = "^[1-9]([0-9]{14}|[0-9]{17})$"; //身份证
  // 正例 
  System.out.println(Pattern.matches(idcard,"100000201410241024")); // true
  // 反例 
  System.out.println(Pattern.matches(idcard,"1000002014102410240")); // false

36、数字或字母

  public static final String numOrStr = "^[A-Za-z0-9]+$";//数字或字母
  // 正例 
  System.out.println(Pattern.matches(numOrStr,"abc123")); // true
  System.out.println(Pattern.matches(numOrStr,"abc")); // true
  System.out.println(Pattern.matches(numOrStr,"123")); // true
  // 反例 
  System.out.println(Pattern.matches(numOrStr,"Tom弹架构")); // false

本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!

如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。

相关文章
|
数据可视化 Java
这样调试正则表达式,开发效率提升80%
我们在日常的Java开发中,经常需要处理一些字符串,如果使用正则表达式就能大大提升开发效率。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式。另外,我还分享了很多面试题,想学习的可以在我的煮叶简介中找到。
74 0
|
6月前
|
PHP 开发者
【PHP 开发专栏】PHP 字符串处理与正则表达式
【4月更文挑战第30天】本文探讨了PHP中的字符串处理和正则表达式应用。字符串处理部分涵盖基本操作(如连接、长度计算、截取)、格式化(printf/sprintf)、转换(数字与字符串间转换、大小写变换)、比较。正则表达式部分介绍了基本概念、语法(字符类、量词、边界符、分组)及其在搜索替换、数据验证和信息提取中的应用。了解并熟练运用这些技术对PHP开发者至关重要。
58 3
|
JavaScript 前端开发
【正则表达式】字符串模式匹配,提高开发效率
今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会用到的,学会正则表达式之后会让你除了提高效率外,会给你带来绝对的成就感。
【正则表达式】字符串模式匹配,提高开发效率
|
Shell 索引 Python
Python开发基础总结(一)套接字+字符串+正则表达式
Python开发基础总结(一)套接字+字符串+正则表达式
|
Oracle 关系型数据库
Oracle开发中的正则表达式
今天在一个技术讨论群里有人问了一个问题,@我了一下,我就看了一眼。问题给了一个字符串,字符串里有数字有字母有特殊符号,需求是取该字符串中连续的数字。要求用正则表达式。我对正则表达式也不是精通,一知半解。就帮他看了一下,想了一个思路: 1、先找到第一个数字出现的位置; 2、从第一个数字的位置开始,找到第一个非数字出现的位置; 3、然后从第一个出现数字的位置开始截取字符,截取到第一个非字
1176 0
|
自然语言处理 C语言 API
【Qt编程】基于Qt的词典开发系列<十五>html特殊字符及正则表达式
1、html特殊字符的显示      我们知道html语言和C语言一样也有一些特殊字符,它们是不能正常显示的,必须经过转义,在网上可以查到如何显示这些字符,如下图所示: 上图给了最常用的特殊字符的显示,下面我们来实验一下: 首先在记事本中写入一句: 程序例#include 然后就文本后缀名改为.html后,用浏览器打开,显示如下: 我们从上图可以发现include后面没有显示,但是当我们在文本中写入: 程序例#include 或 程序例#include 时就能正常显示了。
1137 0
|
iOS开发
IOS开发---菜鸟学习之路--(二十一)-利用正则表达式解析URL获取其中的参数
因为项目需要解析URL当中参数的部分,在网上搜索了一下都没有相关的资料。 然后就自己写了一个 其实我就是通过正则表达式来处理URL 进行解析的 好了直接上代码吧 也是非常的简单,大家拷贝过去就可以使用了 -(NSString *) jiexi:(NSString *)CS webadd...
1722 0
|
机器学习/深度学习 Java
我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文
今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.
1563 0
|
5月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
54 2
|
5月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。