困了就睡 發表於 2021-11-15 11:39:17

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">写在前面</a></li><li><a href="#_label1">1、整数</a></li><li><a href="#_label2">2、正整数</a></li><li><a href="#_label3">3、负整数</a></li><li><a href="#_label4">4、数字</a></li><li><a href="#_label5">5、正数(正整数 + 0)</a></li><li><a href="#_label6">6、负数(负整数 + 0)</a></li><li><a href="#_label7">7、浮点数</a></li><li><a href="#_label8">8、正浮点数</a></li><li><a href="#_label9">9、负浮点数</a></li><li><a href="#_label10">10、浮点数</a></li><li><a href="#_label11">11、非负浮点数(正浮点数 + 0)</a></li><li><a href="#_label12">12、非正浮点数(负浮点数 + 0)</a></li><li><a href="#_label13">13、邮箱地址</a></li><li><a href="#_label14">14、颜色值匹配</a></li><li><a href="#_label15">15、url匹配</a></li><li><a href="#_label16">16、纯仅中文字符</a></li><li><a href="#_label17">17、仅ACSII字符</a></li><li><a href="#_label18">18、邮政编码</a></li><li><a href="#_label19">19、国内手机号码</a></li><li><a href="#_label20">20、IP V4 地址</a></li><li><a href="#_label21">21、非空字符</a></li><li><a href="#_label22">22、图片后缀</a></li><li><a href="#_label23">23、音频后缀</a></li><li><a href="#_label24">24、视频后缀</a></li><li><a href="#_label25">25、压缩文件后缀</a></li><li><a href="#_label26">26、日期格式&nbsp;</a></li><li><a href="#_label27">27、日期和时间格式</a></li><li><a href="#_label28">28、QQ号码</a></li><li><a href="#_label29">29、电话号码的函数(包括验证国内区号,国际区号,分机号)</a></li><li><a href="#_label30">30、用户名注册</a></li><li><a href="#_label31">31、字母数字组合</a></li><li><a href="#_label32">32、纯字母</a></li><li><a href="#_label33">33、纯大写字母</a></li><li><a href="#_label34">34、纯小写字母</a></li><li><a href="#_label35">35、第二代身份证号码匹配</a></li><li><a href="#_label36">36、数字或字母</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>写在前面</h2>
<p>我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。</p>
<p class="maodian"><a name="_label1"></a></p><h2>1、整数</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300027.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
public static final String intege = "^-&#63;\\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</pre>
</div>
<p class="maodian"><a name="_label2"></a></p><h2>2、正整数</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300027.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
public static final String intege1 = "^\\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</pre>
</div>
<p class="maodian"><a name="_label3"></a></p><h2>3、负整数</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300027.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
public static final String intege2 = "^-\\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</pre>
</div>
<p class="maodian"><a name="_label4"></a></p><h2>4、数字</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300027.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String num = "^([+-]&#63;)\\d*\\.&#63;\\d+$/";          //数字
   
    // 正例
    System.out.println(Pattern.matches(num,"123")); // true
    System.out.println(Pattern.matches("0")); // true
   
    // 反例
    System.out.println(Pattern.matches(num,"a123")); // false
    </pre>
</div>
<p class="maodian"><a name="_label5"></a></p><h2>5、正数(正整数 + 0)</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String num1 = "^\\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
    </pre>
</div>
<p class="maodian"><a name="_label6"></a></p><h2>6、负数(负整数 + 0)</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300028.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String num2 = "^-\\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
    </pre>
</div>
<p class="maodian"><a name="_label7"></a></p><h2>7、浮点数</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300028.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String decmal = "^([+-]&#63;)\\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</pre>
</div>
<p class="maodian"><a name="_label8"></a></p><h2>8、正浮点数</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300028.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String decmal1 = "^\\d*.\\d*|0.\\d*\\d*$"; //正浮点数
   
    // 正例
    System.out.println(Pattern.matches(decmal1,"0.1")); // true
   
    // 反例
    System.out.println(Pattern.matches(decmal1,"-0.1")); // false
    </pre>
</div>
<p class="maodian"><a name="_label9"></a></p><h2>9、负浮点数</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300029.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String decmal2 = "^-(\\d*.\\d*|0.\\d*\\d*)$"; //负浮点数
   
    // 正例
    System.out.println(Pattern.matches(decmal2,"-0.1")); // true
   
    // 反例
    System.out.println(Pattern.matches(decmal2,"0.1")); // false </pre>
</div>
<p class="maodian"><a name="_label10"></a></p><h2>10、浮点数</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300030.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String decmal3 = "^-&#63;(\\d*.\\d*|0.\\d*\\d*|0&#63;.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
    </pre>
</div>
<p class="maodian"><a name="_label11"></a></p><h2>11、非负浮点数(正浮点数 + 0)</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300131.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String decmal4 = "^\\d*.\\d*|0.\\d*\\d*|0&#63;.0+|0$";//非负浮点数(正浮点数 + 0)
   
    // 正例
    System.out.println(Pattern.matches(decmal4,"0.1")); // true
   
    // 反例
    System.out.println(Pattern.matches(decmal4,"-0.1")); // false
    </pre>
</div>
<p class="maodian"><a name="_label12"></a></p><h2>12、非正浮点数(负浮点数 + 0)</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300131.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String decmal5 = "^(-(\\d*.\\d*|0.\\d*\\d*))|0&#63;.0+|0$"; //非正浮点数(负浮点数 + 0)
   
    // 正例
    System.out.println(Pattern.matches(decmal5,"-0.1")); // true
   
    // 反例
    System.out.println(Pattern.matches(decmal5,"0.1")); // false
    </pre>
</div>
<p class="maodian"><a name="_label13"></a></p><h2>13、邮箱地址</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300132.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String email = "^\\w+((-\\w+)|(\\.\\w+))*\\@+((\\.|-)+)*\\.+$"; //邮件
   
    // 正例
    System.out.println(Pattern.matches(email,"tom@gupaoedu.com")); // true
   
    // 反例
    System.out.println(Pattern.matches(email,"tom.gupaoedu.com")); // false
    </pre>
</div>
<p class="maodian"><a name="_label14"></a></p><h2>14、颜色值匹配</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300133.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String color = "^{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</pre>
</div>
<p class="maodian"><a name="_label15"></a></p><h2>15、url匹配</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300134.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String url = "^http&#63;:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-.\\/&#63;%&amp;=]*)&#63;$"; //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
    </pre>
</div>
<p class="maodian"><a name="_label16"></a></p><h2>16、纯仅中文字符</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300235.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String chinese = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$";               //仅中文
   
    // 正例
    System.out.println(Pattern.matches(chinese,"汤姆弹架构")); // true
   
    // 反例
    System.out.println(Pattern.matches(chinese,"Tom弹架构")); // false
    </pre>
</div>
<p class="maodian"><a name="_label17"></a></p><h2>17、仅ACSII字符</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300236.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String ascii = "^[\\x00-\\xFF]+$";            //仅ACSII字符
   
    // 正例
    System.out.println(Pattern.matches(ascii,"abc123")); // true
   
    // 反例
    System.out.println(Pattern.matches(ascii,"にそ①②③")); // false
    </pre>
</div>
<p class="maodian"><a name="_label18"></a></p><h2>18、邮政编码</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300236.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String zipcode = "^\\d{6}$";                        //邮编
   
    // 正例
    System.out.println(Pattern.matches(zipcode,"100000")); // true
   
    // 反例
    System.out.println(Pattern.matches(zipcode,"1000000")); // false
    </pre>
</div>
<p class="maodian"><a name="_label19"></a></p><h2>19、国内手机号码</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300237.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String mobile = "^(13|15|16|17|18){9}$";               //手机
   
    // 正例
    System.out.println(Pattern.matches(zipcode,"13800138000")); // true
   
    // 反例
    System.out.println(Pattern.matches(zipcode,"19900010002")); // false
    </pre>
</div>
<p class="maodian"><a name="_label20"></a></p><h2>20、IP V4 地址</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300238.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String ip4 = "^(25|2\\d|\\d{2}|&#63;\\d)\\.(25|2\\d|\\d{2}|&#63;\\d)\\.(25|2\\d|\\d{2}|&#63;\\d)\\.(25|2\\d|\\d{2}|&#63;\\d)$"; //ip地址
   
    // 正例
    System.out.println(Pattern.matches(zipcode,"127.0.0.1")); // true
   
    // 反例
    System.out.println(Pattern.matches(zipcode,"aa.bb.cc.dd")); // false
</pre>
</div>
<p class="maodian"><a name="_label21"></a></p><h2>21、非空字符</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300238.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String notempty = "^\\S+$";                     //非空
   
    // 正例
    System.out.println(Pattern.matches(notempty,"abc ")); // true
   
    // 反例
    System.out.println(Pattern.matches(notempty,"")); // false
    </pre>
</div>
<p class="maodian"><a name="_label22"></a></p><h2>22、图片后缀</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300239.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    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</pre>
</div>
<p class="maodian"><a name="_label23"></a></p><h2>23、音频后缀</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300240.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    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
    </pre>
</div>
<p class="maodian"><a name="_label24"></a></p><h2>24、视频后缀</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300240.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    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
</pre>
</div>
<p class="maodian"><a name="_label25"></a></p><h2>25、压缩文件后缀</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300341.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    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
    </pre>
</div>
<p class="maodian"><a name="_label26"></a></p><h2>26、日期格式&nbsp;</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300342.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    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
    </pre>
</div>
<p class="maodian"><a name="_label27"></a></p><h2>27、日期和时间格式</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300343.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String datetime = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}(\\s\\d{2}:)&#63;(\\d{2}:)&#63;(\\d{2})&#63;$";   //日期和时间
   
    // 正例
    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
      </pre>
</div>
<p class="maodian"><a name="_label28"></a></p><h2>28、QQ号码</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300344.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String qq = "^**$";      //QQ号码
   
    // 正例
    System.out.println(Pattern.matches(qq,"123456")); // true
   
    // 反例
    System.out.println(Pattern.matches(qq,"1234567890")); // false
      </pre>
</div>
<p class="maodian"><a name="_label29"></a></p><h2>29、电话号码的函数(包括验证国内区号,国际区号,分机号)</h2>
<p style="text-align: center"><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300345.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String tel = "^((\\d{2,3}-)&#63;(0\\d{2,3})-)&#63;(\\d{7,8})(-(\\d{3,}))&#63;$";//电话号码的函数(包括验证国内区号,国际区号,分机号)
   
    // 正例
    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
      </pre>
</div>
<p class="maodian"><a name="_label30"></a></p><h2>30、用户名注册</h2>
<p><img alt="图片" src="https://img.jbzj.com/file_images/article/202111/2021111511300446.png" /></p>
<div class="jb51code">
<pre class="brush:java;">
    public static final String username = "^\\w{5,}$";//用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
      
    // 正例
    System.out.println(Pattern.matches(username,"gupaoedutom")); // true
   
    // 反例
    System.out.println(Pattern.matches(username,"tom@gupaoedu")); // false
    </pre>
</div>
<p class="maodian"><a name="_label31"></a></p><h2>31、字母数字组合</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String allstring = "^\\w+$"; //字母数字组合
   
    // 正例
    System.out.println(Pattern.matches(allstring,"abc123")); // true
   
    // 反例
    System.out.println(Pattern.matches(allstring,"abc123%^&amp;")); // false
    </pre>
</div>
<p class="maodian"><a name="_label32"></a></p><h2>32、纯字母</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String letter = "^+$";                  //字母
   
    // 正例
    System.out.println(Pattern.matches(letter,"abc")); // true
   
    // 反例
    System.out.println(Pattern.matches(letter,"abc123")); // false
      </pre>
</div>
<p class="maodian"><a name="_label33"></a></p><h2>33、纯大写字母</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String letter_u = "^+$";                   //大写字母
   
    // 正例
    System.out.println(Pattern.matches(letter_u,"ABC")); // true
   
    // 反例
    System.out.println(Pattern.matches(letter_u,"abc")); // false
      </pre>
</div>
<p class="maodian"><a name="_label34"></a></p><h2>34、纯小写字母</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String letter_l = "^+$";                   //小写字母
   
    // 正例
    System.out.println(Pattern.matches(letter_l,"abc")); // true
   
    // 反例
    System.out.println(Pattern.matches(letter_l,"ABC")); // false
    </pre>
</div>
<p class="maodian"><a name="_label35"></a></p><h2>35、第二代身份证号码匹配</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String idcard = "^({14}|{17})$"; //身份证
   
    // 正例
    System.out.println(Pattern.matches(idcard,"100000201410241024")); // true
   
    // 反例
    System.out.println(Pattern.matches(idcard,"1000002014102410240")); // false
    </pre>
</div>
<p class="maodian"><a name="_label36"></a></p><h2>36、数字或字母</h2>
<div class="jb51code">
<pre class="brush:java;">
    public static final String numOrStr = "^+$";//数字或字母
   
    // 正例
    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</pre>
</div>
頁: [1]
查看完整版本: 36个正则表达式(开发效率提高80%)