36个正则表达式(开发效率提高80%)
我们在日常的Java开发中,经常需要处理一些字符串,本文主要介绍了36个常用正则表达式,感兴趣的可以了解一下
目录
写在前面
1、整数
2、正整数
3、负整数
4、数字
5、正数(正整数 + 0)
6、负数(负整数 + 0)
7、浮点数
8、正浮点数
9、负浮点数
10、浮点数
11、非负浮点数(正浮点数 + 0)
12、非正浮点数(负浮点数 + 0)
13、邮箱地址
14、颜色值匹配
15、url匹配
16、纯仅中文字符
17、仅ACSII字符
18、邮政编码
19、国内手机号码
20、IP V4 地址
21、非空字符
22、图片后缀
23、音频后缀
24、视频后缀
25、压缩文件后缀
26、日期格式
27、日期和时间格式
28、QQ号码
29、电话号码的函数(包括验证国内区号,国际区号,分机号)
30、用户名注册
31、字母数字组合
32、纯字母
33、纯大写字母
34、纯小写字母
35、第二代身份证号码匹配
36、数字或字母
写在前面
我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。
1、整数
1 2 3 4 5 6 7 8 9 | 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、正整数
1 2 3 4 5 6 7 8 | 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、负整数
1 2 3 4 5 6 7 8 | 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、数字
1 2 3 4 5 6 7 8 | 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)
1 2 3 4 5 6 7 8 | 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)
1 2 3 4 5 6 7 8 | 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、浮点数
1 2 3 4 5 6 7 8 | 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、正浮点数
1 2 3 4 5 6 7 | 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、负浮点数
1 2 3 4 5 6 7 | 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、浮点数
1 2 3 4 5 6 7 8 | 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)
1 2 3 4 5 6 7 | 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)
1 2 3 4 5 6 7 | 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、邮箱地址
1 2 3 4 5 6 7 | 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@gupaoedu.com" )); // true // 反例 System.out.println(Pattern.matches(email, "tom.gupaoedu.com" )); // false |
14、颜色值匹配
1 2 3 4 5 6 7 8 9 | 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匹配
1 2 3 4 5 6 7 8 9 | 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、纯仅中文字符
1 2 3 4 5 6 7 | 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字符
1 2 3 4 5 6 7 | public static final String ascii = "^[\\x00-\\xFF]+$" ; //仅ACSII字符 // 正例 System.out.println(Pattern.matches(ascii, "abc123" )); // true // 反例 System.out.println(Pattern.matches(ascii, "にそ①②③" )); // false |
18、邮政编码
1 2 3 4 5 6 7 | public static final String zipcode = "^\\d{6}$" ; //邮编 // 正例 System.out.println(Pattern.matches(zipcode, "100000" )); // true // 反例 System.out.println(Pattern.matches(zipcode, "1000000" )); // false |
19、国内手机号码
1 2 3 4 5 6 7 | 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 地址
1 2 3 4 5 6 7 | 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、非空字符
1 2 3 4 5 6 7 | public static final String notempty = "^\\S+$" ; //非空 // 正例 System.out.println(Pattern.matches(notempty, " abc " )); // true // 反例 System.out.println(Pattern.matches(notempty, "" )); // false |
22、图片后缀
1 2 3 4 5 6 7 | 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、音频后缀
1 2 3 4 5 6 7 | 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、视频后缀
1 2 3 4 5 6 7 | 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、压缩文件后缀
1 2 3 4 5 6 7 | 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、日期格式
1 2 3 4 5 6 7 8 | 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、日期和时间格式
1 2 3 4 5 6 7 8 | 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号码
1 2 3 4 5 6 7 | 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、电话号码的函数(包括验证国内区号,国际区号,分机号)
1 2 3 4 5 6 7 8 | 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、用户名注册
1 2 3 4 5 6 7 | public static final String username = "^[A-Za-z]\\w{5,}$" ; //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串 // 正例 System.out.println(Pattern.matches(username, "gupaoedutom" )); // true // 反例 System.out.println(Pattern.matches(username, "tom@gupaoedu" )); // false |
31、字母数字组合
1 2 3 4 5 6 7 | public static final String allstring = "^\\w+$" ; //字母数字组合 // 正例 System.out.println(Pattern.matches(allstring, "abc123" )); // true // 反例 System.out.println(Pattern.matches(allstring, "abc123%^&" )); // false |
32、纯字母
1 2 3 4 5 6 7 | 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、纯大写字母
1 2 3 4 5 6 7 | 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、纯小写字母
1 2 3 4 5 6 7 | 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、第二代身份证号码匹配
1 2 3 4 5 6 7 | 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、数字或字母
1 2 3 4 5 6 7 8 9 | 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, "脚本之家" )); // false |
到此这篇关于36个正则表达式(开发效率提高80%)的文章就介绍到这了
原文链接:https://www.jianshu.com/p/c7845439bb8b