日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 正则表达式的用法与实例

發布時間:2024/8/1 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 正则表达式的用法与实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄結構

  • 一、簡介
  • 二、相關符號
    • 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 正则表达式的用法与实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。