京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6068|回复: 0

36个正则表达式(开发效率提高80%)

[复制链接]

21

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-11-30 18:26:07 | 显示全部楼层 |阅读模式 来自 中国
目录
& C9 |; i4 x, q- f8 n; u/ l( r) h. o; y) \

    & n( ?9 U) {4 |4 b! W  ?
  • 写在前面0 z! A4 m: N/ u6 f- c; p
  • 1、整数) g8 F4 I% ]( z- J5 J
  • 2、正整数3 @. c7 e* p* E0 N& W
  • 3、负整数
    ) {) y. B0 N+ `& y( s, U1 J! U
  • 4、数字- I. E  [5 A3 k% T( ^
  • 5、正数(正整数 + 0)
    ) ?8 @: ^' K- D& V% O5 m1 E8 R
  • 6、负数(负整数 + 0)) z, h! v  o# n
  • 7、浮点数
    % S* _  R- C9 h. Q
  • 8、正浮点数
    : f6 p; w6 n& G: {4 Z. p0 y7 S7 f
  • 9、负浮点数9 B; F, `/ K/ _) ~
  • 10、浮点数  O7 l$ c3 c! ~3 ^& p
  • 11、非负浮点数(正浮点数 + 0)
    4 D  d1 @  g6 K
  • 12、非正浮点数(负浮点数 + 0)
    # k) B( c2 v) Z- M
  • 13、邮箱地址
    6 D/ i8 `. i" Z0 g. m  K* I7 L
  • 14、颜色值匹配
    + `; J3 c! V8 d
  • 15、url匹配7 j: L! d$ b5 S+ M0 {3 w* i
  • 16、纯仅中文字符$ `$ f. \  y0 n( |
  • 17、仅ACSII字符: U7 t6 y) x( N1 {3 P
  • 18、邮政编码8 b$ ]# L  j# f% W2 n7 L6 Q% q/ e
  • 19、国内手机号码( B9 B7 r! n; ^" v3 }
  • 20、IP V4 地址9 h! o' P% F/ L
  • 21、非空字符
    7 f! [. H1 j5 o9 ^) n
  • 22、图片后缀
    % S2 y6 o* q1 K8 I
  • 23、音频后缀, |+ Q* z; \8 E. V3 [
  • 24、视频后缀
    , V( e+ U# ?# o! N/ q
  • 25、压缩文件后缀& ?! g7 g8 |! d
  • 26、日期格式 . j  n, ]3 E) i1 t% z, l" s) d, H
  • 27、日期和时间格式) X7 T( d* O9 b$ l3 J4 e
  • 28、QQ号码* B5 L! z# Z$ S# x
  • 29、电话号码的函数(包括验证国内区号,国际区号,分机号)9 j/ w& g, |! ?
  • 30、用户名注册$ M5 Z/ E- k* ~) Z
  • 31、字母数字组合  d  E% |" R8 D9 ?) ]6 [
  • 32、纯字母
    % R& P0 c6 x2 `$ b
  • 33、纯大写字母3 m# ]7 X7 b. }0 r. r; l8 t
  • 34、纯小写字母
    ) H' j  k8 A& b
  • 35、第二代身份证号码匹配
    . R3 x$ T1 c7 i7 n
  • 36、数字或字母) w1 g8 k7 D: U. b

( |$ L, H/ \! y) m* {) m写在前面
+ C% s  _# I; d( W8 J
% Q$ u! S$ A. n" r我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。6 |" t6 E* S, `% f

, d. c0 M3 C, O6 ]: \1、整数7 Z- M+ C) p- M: Y8 E. O
0 O' ?4 _/ o2 ~9 k" {' J
  1. 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、正整数( F1 `: o" @, t' Y  J6 N
) u% c, k1 o% x. z( d
  1. 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 p6 y3 C& h9 \+ e$ s7 i/ l! B8 t; G% h, l; q6 T- I
  1. 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、数字
* q) ?" O4 @% K* f$ o6 q6 u1 P1 Y/ b6 O; T
  1. 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)
/ z- g) k- w  \! A/ o# D2 ]* Y" n
  1. 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)+ S* b* D0 O  D, l2 w$ L4 V: S
+ a/ V6 q8 V' F% m2 E1 H
  1. 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、浮点数
) X6 M, N9 q( b' O/ y% I
7 j) x2 [& `8 `" @( f5 `
  1. 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、正浮点数0 l5 D  B& I7 T6 K* s

2 R* i- ^4 f2 Z( R
  1. 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、负浮点数) g( I6 ?4 H% D) Z

! k, p% f: X$ P/ E: V
  1. 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、浮点数
; n5 `, o5 v! w" n
5 V+ a# s; h* n
  1. 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)2 c2 V7 q0 h7 V$ j) l: |( r
' I& k' @8 W. c( c
  1. 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); I. q# ?, K: X: y* N8 u
1 b1 o* `* `9 ?3 C* Z# a
  1. 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、邮箱地址' t4 o! r9 n* r, W. M: f

8 G$ m/ }+ }4 Z: c0 _% m
  1. 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、颜色值匹配
/ q4 c- ]6 L( Q6 c/ z, r9 I# A6 [. L
  1. 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匹配% ]6 K4 u, z/ L  Z2 ?
5 d0 X7 \  H6 w6 t4 J6 [) j! Y6 |: N
  1. 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、纯仅中文字符
4 v/ Y. Q5 T5 K
) Y( [* k6 {1 q5 x+ P" E' n
  1. 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字符2 }- d7 [9 _0 e/ f; T' `3 G7 i
0 h% W' i' Y0 F$ ^
  1. public static final String ascii = "^[\\x00-\\xFF]+$";              //仅ACSII字符        // 正例     System.out.println(Pattern.matches(ascii,"abc123")); // true        // 反例     System.out.println(Pattern.matches(ascii,"にそ①②③")); // false
复制代码
18、邮政编码
$ ?5 H% ]# b$ T# R2 s8 v/ |4 Q7 d+ t  Y  }1 W
  1. public static final String zipcode = "^\\d{6}$";                        //邮编        // 正例     System.out.println(Pattern.matches(zipcode,"100000")); // true        // 反例     System.out.println(Pattern.matches(zipcode,"1000000")); // false
复制代码
19、国内手机号码) l# I& T- m% I9 u
  D* U- o7 \. R0 S6 x1 L: [% S/ j' e9 d
  1. 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 地址) G5 J8 V. u, U# c2 Z9 C

& ~  k  ~9 t  `8 q! N6 q5 D" Q% J
  1. 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、非空字符
% _# Z$ N" z5 ?, i6 @: ?3 K9 S# y
  1. public static final String notempty = "^\\S+$";                     //非空        // 正例     System.out.println(Pattern.matches(notempty,"  abc ")); // true        // 反例     System.out.println(Pattern.matches(notempty,"")); // false
复制代码
22、图片后缀
0 K  Q' f( a8 C' F$ @8 i% f' H" x( `2 Z3 q% ?% F$ C; ?
  1. 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、音频后缀# f/ o$ ^. S" F" M
+ b- f# p- g0 B' p" Z( O+ C9 g+ g
  1. 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、视频后缀; O1 j% F* n& _$ ]3 J: J

: ]5 I8 V5 H' b: C% |
  1. 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、压缩文件后缀
0 q: P+ d4 s4 T. O
  }- n0 i3 [: F! p
  1. 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、日期格式 
0 W, D& N7 C: r" ]( O. c1 \
  O/ A7 _2 u* s
  1. 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、日期和时间格式
6 @: N. y- W% {/ a4 P7 I$ I# w1 Q' H1 b2 K) {2 X8 g
  1. 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号码
3 k" N/ K2 E: j& g$ L  L
/ ~& j+ \1 Y  Y9 O# S! x4 W2 P* z
  1. 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、电话号码的函数(包括验证国内区号,国际区号,分机号)) E  _! q- q6 v; ^7 q; Z: {
/ A! f5 O) \) L* W* y% h
  1. 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、用户名注册
* S" ?5 ^# _% t  z
# [* B; ^2 K* d/ u1 |
  1. 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、字母数字组合
$ s: s( n3 ]) Z7 W2 N7 k0 ]; w
  1. public static final String allstring = "^\\w+$"; //字母数字组合        // 正例     System.out.println(Pattern.matches(allstring,"abc123")); // true        // 反例     System.out.println(Pattern.matches(allstring,"abc123%^&")); // false
复制代码
32、纯字母
/ K( ]0 _$ C" a' ~8 A+ @8 ^. E/ o
  1. 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、纯大写字母
. C" g7 K& p+ A+ p  I
  1. 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、纯小写字母6 W+ V4 k4 l) w6 |' h( K; V
  1. 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、第二代身份证号码匹配
, I! v% M' F6 T7 V& k  U
  1. 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、数字或字母
  l' w& L! Y- A4 c, m
  1. 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%)的文章就介绍到这了,更多相关正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
3 L3 p% s- o4 w8 R
" S. P: d  |5 x2 w  n来源:http://www.jb51.net/article/229226.htm
' x, w9 j! w- [免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2026-10-21 10:09 , Processed in 0.054273 second(s), 24 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表