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

歡迎訪問 生活随笔!

生活随笔

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

java

Java常用API(三)Pattern 正则表达式

發布時間:2024/4/30 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常用API(三)Pattern 正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1. 一個用于指定規則的類

正則Regex , 在java中正則形成了一個單獨的包 java.util.regex , 代表正則的類 --- Pattern 正則表達式本質上適用于指定匹配或篩選規則的一系列表達式 。

2. matches(regex)

[ ] : 表示一個字符。 ?[abc] ?匹配a\b\c中任意一個字符

- : 用于表示范圍 。 ?[a-z] ?匹配a~z中任意一個字符

^ : 表示過濾。 ? ? ?[^a] ?匹配除a意外任意字符

. : 表示任意一個字符。 ?[ .] 匹配任意一個字符 ?,若想匹配一個"." ?則需要轉義,java中用\表示后面的字符需要轉義,在正則表達式中"\"也需要轉義,所以"\\."表示匹配一個"."。

\d : 表示匹配 一個數字 。?

\D :表示匹配一個非數字。

\s: 表示匹配一個空白字符。

\S : 表示匹配一個非空白字符

\w : 表示匹配一個單詞字符

+ : 表示至少出現一次。 ?"a.+" 匹配以"a"開頭至少有兩個字符組成的字符串。

*?:表示可有可無。 "a.*" 匹配以"a" 開頭 的任意字符串。

? : 表示出現0或1次?"a.?" 匹配以"a"開頭最多有兩個字符組成的字符串 。

{ } : 表示出現次數".{5}" ?表示由5個字符組成的字符串;".{5,}" 表示至少由5個字符組成的字符串 ;".{5,10}" 表示由5~10個字符組成的字符串。

補充:\r回車:光標移至初始位置 ? ?\n 換行 : 光標移至下一行 ? ?JDK1.7以后不再區分。

() : 表示一盒捕獲組 ?".*(abc).*" 匹配含有abc的字符串。捕獲組會自動編號,下次想使用時可用編號"\\1"”引用。 ".*(abc).*\\1.*" 匹配含有與兩個abc的字符串。捕獲組編號規則:(第一的出現的位置開始計算。 匹配疊字: "(.)\\1+" ? ?;匹配ABAB格式的字符串 :"(..)\\1

注意:"(.){2}" 表示出現兩次,內容可以不同 ? ? ?"(.)\\1" 表示出現兩次,內容必須相同 。

?練習: 1.匹配小數

2. 匹配郵箱

3. 匹配密碼 :6~12位 ,至少有小寫字母、大寫字母、數字、符號中的三種組成。?

/*** 匹配小數* */public static void regexsmallNum(String str){System.out.println(str.matches("0\\.\\d+")||str.matches("[1-9]\\d*\\.\\d+"));}/*** 匹配郵箱* */public static void regexEmail(String str){System.out.println(str.matches("[0-9a-zA-Z]+_*[0-9a-zA-Z]*@[0-9a-zA-Z]+(\\.(com|cn)){1,2}"));}/*** 密碼匹配* 6~12位 至少由 大寫、小寫、數字、空格中的三個* */public static boolean regexPassword(String str){//判斷參數是否為空if(str ==null){return false;}//判斷密碼位數if(!str.matches(".{6,12}")){return false;}int i = 0; // 記錄字符種類//判斷是否含有小寫字母if(str.matches(".*[a-z].*")){i++;}//判斷是否出現大寫字母if(str.matches(".*[A-Z].*")){i++;}//判斷是否出現數字if(str.matches(".*[0-9].*")){i++;}//判斷是否出現空格if(str.matches(".*( ).*")){i++;}//判斷字符個數if(i>2){return true;}return false;}

3. replaceAll("\d","-"); ? 將有數字替換為"-"

replace() 只能替換普通字符或字符串 ,replaceAll() 支持正則表達式。 練習: 記錄字符串中每個字符出現的個數 /*** 記錄字符串中每個字符出現的次數* */public static void printNum(String str){int length = 0;while(str.length()>0){length = str.length();char c = str.charAt(0);str = str.replace(c+"", "");System.out.println(c+":"+(length - str.length()));}}

補充: 二十四個常用正則表達式(摘自:http://www.jb51.net/article/34155.htm)

  • 只能輸入數字:"^[0-9]*$"。
  • 只能輸入n位的數字:"^\d{n}$"。
  • 只能輸入至少n位的數字:"^\d{n,}$"。
  • 只能輸入m~n位的數字:。"^\d{m,n}$"
  • 只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。
  • 只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。
  • 只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。
  • 只能輸入非零的正整數:"^\+?[1-9][0-9]*$"。
  • 只能輸入非零的負整數:"^\-[1-9][]0-9"*$。
  • 只能輸入長度為3的字符:"^.{3}$"。
  • 只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$"。
  • 只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$"。
  • 只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$"。
  • 只能輸入由數字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"。
  • 只能輸入由數字、26個英文字母或者下劃線組成的字符串:"^\w+$"。
  • 驗證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下劃線。
  • 驗證是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
  • 只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
  • 驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
  • 驗證InternetURL:"^http://%28[/\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
  • 驗證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
  • 驗證身份證號(15位或18位數字):"^\d{15}|\d{18}$"。
  • 驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
  • 驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
  • 總結

    以上是生活随笔為你收集整理的Java常用API(三)Pattern 正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

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