1. 程式人生 > >Android 常用正則表示式整理

Android 常用正則表示式整理

前言

閒扯一下,已經有好久沒更新部落格了,記得上一篇部落格的更新時間為 2017-05-12 15:20。截止到今天,超過一百天沒更新了。

這篇部落格的內容大多數是從別的部落格摘抄過來的,寫這篇部落格的目的主要是整理正則表示式的文章,方便日後檢視。

  • java 正則表示式常用的字元說明
  • 常用的正則表示式
  • java 正則表示式的使用
  • 常用的工具類 RexUtils(匹配電話號碼,身份張,電子郵箱,IP地址等)

java 正則表示式常用的字元說明

字元 說明
\ 將下一字元標記為特殊字元、文字、反向引用或八進位制轉義符。例如,”n”匹配字元”n”。”\n”匹配換行符。序列”\\”匹配”\”,”\(“匹配”(“。
^ 匹配輸入字串開始的位置。如果設定了 RegExp 物件的 Multiline 屬性,^ 還會與”\n”或”\r”之後的位置匹配。
$ 匹配輸入字串結尾的位置。如果設定了 RegExp 物件的 Multiline 屬性,$ 還會與”\n”或”\r”之前的位置匹配。
* 零次或多次匹配前面的字元或子表示式。例如,zo* 匹配”z”和”zoo”。* 等效於 {0,}。
+ 一次或多次匹配前面的字元或子表示式。例如,”zo+”與”zo”和”zoo”匹配,但與”z”不匹配。+ 等效於 {1,}。
? 零次或一次匹配前面的字元或子表示式。例如,”do(es)?”匹配”do”或”does”中的”do”。? 等效於 {0,1}。
{n} n 是非負整數。正好匹配 n 次。例如,”o{2}”與”Bob”中的”o”不匹配,但與”food”中的兩個”o”匹配。
{n,} n 是非負整數。至少匹配 n 次。例如,”o{2,}”不匹配”Bob”中的”o”,而匹配”foooood”中的所有 o。”o{1,}”等效於”o+”。”o{0,}”等效於”o*”。
{n,m} M 和 n 是非負整數,其中 n <= m。匹配至少 n 次,至多 m 次。例如,”o{1,3}”匹配”fooooood”中的頭三個 o。’o{0,1}’ 等效於 ‘o?’。注意:您不能將空格插入逗號和數字之間。
? 當此字元緊隨任何其他限定符(*、+、?、{n}、{n,}、{n,m})之後時,匹配模式是”非貪心的”。”非貪心的”模式匹配搜尋到的、儘可能短的字串,而預設的”貪心的”模式匹配搜尋到的、儘可能長的字串。例如,在字串”oooo”中,”o+?”只匹配單個”o”,而”o+”匹配所有”o”。
. 匹配除”\r\n”之外的任何單個字元。若要匹配包括”\r\n”在內的任意字元,請使用諸如”[\s\S]”之類的模式。
(pattern) 匹配 pattern 並捕獲該匹配的子表示式。可以使用 09 屬性從結果”匹配”集合中檢索捕獲的匹配。若要匹配括號字元 ( ),請使用”(“或者”)”。
(?:pattern) 匹配 pattern 但不捕獲該匹配的子表示式,即它是一個非捕獲匹配,不儲存供以後使用的匹配。這對於用”or”字元 (
(?=pattern) 執行正向預測先行搜尋的子表示式,該表示式匹配處於匹配 pattern 的字串的起始點的字串。它是一個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,’Windows (?=95
(?!pattern) 執行反向預測先行搜尋的子表示式,該表示式匹配不處於匹配 pattern 的字串的起始點的搜尋字串。它是一個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,’Windows (?!95
x y
[xyz] 字符集。匹配包含的任一字元。例如,”[abc]”匹配”plain”中的”a”。
[^xyz] 反向字符集。匹配未包含的任何字元。例如,”[^abc]”匹配”plain”中”p”,”l”,”i”,”n”。
[a-z] 字元範圍。匹配指定範圍內的任何字元。例如,”[a-z]”匹配”a”到”z”範圍內的任何小寫字母。
[^a-z] 反向範圍字元。匹配不在指定的範圍內的任何字元。例如,”[^a-z]”匹配任何不在”a”到”z”範圍內的任何字元。
\b 匹配一個字邊界,即字與空格間的位置。例如,”er\b”匹配”never”中的”er”,但不匹配”verb”中的”er”。
\B 非字邊界匹配。”er\B”匹配”verb”中的”er”,但不匹配”never”中的”er”。
\cx 匹配 x 指示的控制字元。例如,\cM 匹配 Control-M 或回車符。x 的值必須在 A-Z 或 a-z 之間。如果不是這樣,則假定 c 就是”c”字元本身。
\d 數字字元匹配。等效於 [0-9]。
\D 非數字字元匹配。等效於 [^0-9]。
\f 換頁符匹配。等效於 \x0c 和 \cL。
\n 換行符匹配。等效於 \x0a 和 \cJ。
\r 匹配一個回車符。等效於 \x0d 和 \cM。
\s 匹配任何空白字元,包括空格、製表符、換頁符等。與 [ \f\n\r\t\v] 等效。
\S 匹配任何非空白字元。與 [^ \f\n\r\t\v] 等效。
\t 製表符匹配。與 \x09 和 \cI 等效。
\v 垂直製表符匹配。與 \x0b 和 \cK 等效。
\w 匹配任何字類字元,包括下劃線。與”[A-Za-z0-9_]”等效。
\W 與任何非單詞字元匹配。與”[^A-Za-z0-9_]”等效。
\xn 匹配 n,此處的 n 是一個十六進位制轉義碼。十六進位制轉義碼必須正好是兩位數長。例如,”\x41”匹配”A”。”\x041”與”\x04”&”1”等效。允許在正則表示式中使用 ASCII 程式碼。
\num 匹配 num,此處的 num 是一個正整數。到捕獲匹配的反向引用。例如,”(.)\1”匹配兩個連續的相同字元。
\n 標識一個八進位制轉義碼或反向引用。如果 \n 前面至少有 n 個捕獲子表示式,那麼 n 是反向引用。否則,如果 n 是八進位制數 (0-7),那麼 n 是八進位制轉義碼。
\nm 標識一個八進位制轉義碼或反向引用。如果 \nm 前面至少有 nm 個捕獲子表示式,那麼 nm 是反向引用。如果 \nm 前面至少有 n 個捕獲,則 n 是反向引用,後面跟有字元 m。如果兩種前面的情況都不存在,則 \nm 匹配八進位制值 nm,其中 n 和 m 是八進位制數字 (0-7)。
\nml 當 n 是八進位制數 (0-3),m 和 l 是八進位制數 (0-7) 時,匹配八進位制轉義碼 nml。
\un 匹配 n,其中 n 是以四位十六進位制數表示的 Unicode 字元。例如,\u00A9 匹配版權符號 (©)。

以上內容來自 Java 正則表示式,該文章裡面寫得很細。

常用的正則表示式

一、校驗數字的表示式

1 數字:^[0-9]*$
 2 n位的數字:^\d{n}$
 3 至少n位的數字:^\d{n,}$
 4 m-n位的數字:^\d{m,n}$
 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$
 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
 7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d{1,2})?$
 8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$
 9 有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
10 有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的負整數:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非負整數:^\d+$ 或 ^[1-9]\d*|0$
14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
save_snippets.png

二、校驗字元的表示式

1 漢字:^[\u4e00-\u9fa5]{0,}$
 2 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
 3 長度為3-20的所有字元:^.{3,20}$
 4 由26個英文字母組成的字串:^[A-Za-z]+$
 5 由26個大寫英文字母組成的字串:^[A-Z]+$
 6 由26個小寫英文字母組成的字串:^[a-z]+$
 7 由數字和26個英文字母組成的字串:^[A-Za-z0-9]+$
 8 由數字、26個英文字母或者下劃線組成的字串:^\w+$ 或 ^\w{3,20}$
 9 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+
12 禁止輸入含有~的字元:[^~\x22]+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
save_snippets.png

三、特殊需求表示式

1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
 3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
 4 手機號碼:^(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}$
 5 電話號碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 
 6 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
 7 身份證號(15位、18位數字):^\d{15}|\d{18}$
 8 短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
 9 帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$
11 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$  
12 日期格式:^\d{4}-\d{1,2}-\d{1,2}
13 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$
14 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$ 
15 錢的輸入格式:
16    1.有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$ 
17    2.這表示任意一個不以0開頭的數字,但是,這也意味著一個字元"0"不通過,所以我們採用下面的形式:^(0|[1-9][0-9]*)$ 
18    3.一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$ 
19    4.這表示一個0或者一個可能為負的開頭不為0的數字.讓使用者以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分:^[0-9]+(.[0-9]+)?$ 
20    5.必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$ 
21    6.這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$ 
22    7.這樣就允許使用者只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ 
23    8.1到3個數字,後面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ 
24    備註:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函式時去掉去掉那個反斜槓,一般的錯誤都在這裡
25 xml檔案:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 中文字元的正則表示式:[\u4e00-\u9fa5]
27 雙位元組字元:[^\x00-\xff]    (包括漢字在內,可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1))
28 空白行的正則表示式:\n\s*\r    (可以用來刪除空白行)
29 HTML標記的正則表示式:<(\S*?)[^>]*>.*?</\1>|<.*? />    (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於複雜的巢狀標記依舊無能為力)
30 首尾空白字元的正則表示式:^\s*|\s*$或(^\s*)|(\s*$)    (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式)
31 騰訊QQ號:[1-9][0-9]{4,}    (騰訊QQ號從10000開始)
32 中國郵政編碼:[1-9]\d{5}(?!\d)    (中國郵政編碼為6位數字)
33 IP地址:\d+\.\d+\.\d+\.\d+    (提取IP地址時有用)
34 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))    (由@飛龍三少 提供,感謝共享)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
save_snippets.png

java 正則表示式的使用

java.util.regex 包主要包括以下三個類:
- Pattern 類:

pattern 物件是一個正則表示式的編譯表示。Pattern 類沒有公共構造方法。要建立一個 Pattern 物件,你必須首先呼叫其公共靜態編譯方法,它返回一個 Pattern 物件。該方法接受一個正則表示式作為它的第一個引數。

  • Matcher 類:

Matcher 物件是對輸入字串進行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構造方法。你需要呼叫 Pattern 物件的 matcher 方法來獲得一個 Matcher 物件。

  • PatternSyntaxException:

PatternSyntaxException 是一個非強制異常類,它表示一個正則表示式模式中的語法錯誤。

以下例項中使用了正則表示式 .runoob. 用於查詢字串中是否包了 runoob 子串:

例項

import java.util.regex.*;

class RegexExample1{
   public static void main(String args[]){
      String content = "I am noob " +
        "from runoob.com.";

      String pattern = ".*runoob.*";

      boolean isMatch = Pattern.matches(pattern, content);
      System.out.println("字串中是否包含了 'runoob' 子字串? " + isMatch);
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
save_snippets.png

例項輸出結果為:

字串中是否包含了 'runoob' 子字串? true
  • 1
save_snippets.png

RexUtils

  • checkIdCard(String idCard)

驗證身份證號碼

  • checkMobile(String mobile)

驗證手機號碼(支援國際格式,+86135xxxx…(中國內地),+00852137xxxx…(中國香港))

  • boolean checkPhone(String phone)

  • checkEmail

檢驗是否是電子郵箱。格式是數字,字母,下劃線,但不含有 -。

  • checkDigit

驗證是否是整數

  • checkDecimals

驗證整數和浮點數

  • checkBlankSpace

檢驗是否是空白字元

  • checkChinese

檢驗是否是中文

  • checkBirthday

驗證日期(日期,格式:1992-09-03,或1992.09.03)

  • 驗證 URL 地址
  • checkIpAddress

匹配 IP 地址

  • phoneNoHide

手機號碼,中間4位星號替換

  • cardIdHide

銀行卡號,保留最後4位,其他星號替換

RexUtisl 工具類原始碼

/**
 * 正則工具類-http://blog.csdn.net/xyang81/article/details/7706408
 * 提供驗證郵箱、手機號、電話號碼、身份證號碼、數字等方法
 */
public final class RegexUtil {

    /**
     * 手機號碼,中間4位星號替換
     *
     * @param phone 手機號
     * @return 星號替換的手機號
     */
    public static String phoneNoHide(String phone) {
        // 括號表示組,被替換的部分$n表示第n組的內容
        // 正則表示式中,替換字串,括號的意思是分組,在replace()方法中,
        // 引數二中可以使用$n(n為數字)來依次引用模式串中用括號定義的字串。
        // "(\d{3})\d{4}(\d{4})", "$1****$2"的這個意思就是用括號,
        // 分為(前3個數字)中間4個數字(最後4個數字)替換為(第一組數值,保持不變$1)(中間為*)(第二組數值,保持不變$2)
        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }

    /**
     * 銀行卡號,保留最後4位,其他星號替換
     *
     * @param cardId 卡號
     * @return 星號替換的銀行卡號
     */
    public static String cardIdHide(String cardId) {
        return cardId.replaceAll("\\d{15}(\\d{3})", "**** **** **** **** $1");
    }

    /**
     * 身份證號,中間10位星號替換
     *
     * @param id 身份證號
     * @return 星號替換的身份證號
     */
    public static String idHide(String id) {
        return id.replaceAll("(\\d{4})\\d{10}(\\d{4})", "$1** **** ****$2");
    }

    /**
     * 是否為車牌號(滬A88888)
     *
     * @param vehicleNo 車牌號
     * @return 是否為車牌號
     */

    public static boolean checkVehicleNo(String vehicleNo) {
        Pattern pattern = Pattern.compile("^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{5}$");
        return pattern.matcher(vehicleNo).find();

    }

    /**
     * 驗證身份證號碼
     *
     * @param idCard 居民身份證號碼15位或18位,最後一位可能是數字或字母
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkIdCard(String idCard) {
        String regex = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}";
        return Pattern.matches(regex, idCard);
    }


    /**
     * 驗證手機號碼(支援國際格式,+86135xxxx...(中國內地),+00852137xxxx...(中國香港))
     *
     * @param mobile 移動、聯通、電信運營商的號碼段
     *               <p>移動的號段:134(0-8)、135、136、137、138、139、147(預計用於TD上網絡卡)
     *               、150、151、152、157(TD專用)、158、159、187(未啟用)、188(TD專用)</p>
     *               <p>聯通的號段:130、131、132、155、156(世界風專用)、185(未啟用)、186(3g)</p>
     *               <p>電信的號段:133、153、180(未啟用)、189</p>
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkMobile(String mobile) {
        String regex = "(\\+\\d+)?1[3458]\\d{9}$";
        return Pattern.matches(regex, mobile);
    }

    /**
     * 驗證固定電話號碼
     *
     * @param phone 電話號碼,格式:國家(地區)電話程式碼 + 區號(城市程式碼) + 電話號碼,如:+8602085588447
     *              <p><b>國家(地區) 程式碼 :</b>標識電話號碼的國家(地區)的標準國家(地區)程式碼。它包含從 0 到 9 的一位或多位數字,
     *              數字之後是空格分隔的國家(地區)程式碼。</p>
     *              <p><b>區號(城市程式碼):</b>這可能包含一個或多個從 0 到 9 的數字,地區或城市程式碼放在圓括號——
     *              對不使用地區或城市程式碼的國家(地區),則省略該元件。</p>
     *              <p><b>電話號碼:</b>這包含從 0 到 9 的一個或多個數字 </p>
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkPhone(String phone) {
        String regex = "(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$";
        return Pattern.matches(regex, phone);
    }

    /**
     * 驗證Email
     *
     * @param email email地址,格式:[email protected][email protected],xxx代表郵件服務商
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkEmail(String email) {
        String regex = "\\[email protected]\\w+\\.[a-z]+(\\.[a-z]+)?";
        return Pattern.matches(regex, email);
    }

    /**
     * 驗證整數(正整數和負整數)
     *
     * @param digit 一位或多位0-9之間的整數
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkDigit(String digit) {
        String regex = "\\-?[1-9]\\d+";
        return Pattern.matches(regex, digit);
    }

    /**
     * 驗證整數和浮點數(正負整數和正負浮點數)
     *
     * @param decimals 一位或多位0-9之間的浮點數,如:1.23,233.30
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkDecimals(String decimals) {
        String regex = "\\-?[1-9]\\d+(\\.\\d+)?";
        return Pattern.matches(regex, decimals);
    }

    /**
     * 驗證空白字元
     *
     * @param blankSpace 空白字元,包括:空格、\t、\n、\r、\f、\x0B
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkBlankSpace(String blankSpace) {
        String regex = "\\s+";
        return Pattern.matches(regex, blankSpace);
    }

    /**
     * 驗證中文
     *
     * @param chinese 中文字元
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkChinese(String chinese) {
        String regex = "^[\u4E00-\u9FA5]+$";
        return Pattern.matches(regex, chinese);
    }

    /**
     * 驗證日期(年月日)
     *
     * @param birthday 日期,格式:1992-09-03,或1992.09.03
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkBirthday(String birthday) {
        String regex = "[1-9]{4}([-./])\\d{1,2}\\1\\d{1,2}";
        return Pattern.matches(regex, birthday);
    }

    /**
     * 驗證URL地址
     *
     * @param url 格式:http://blog.csdn.net/gdutxiaoxu/article/details/71732642或 http://www.csdn.net:80
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkURL(String url) {
        String regex = "(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?";
        return Pattern.matches(regex, url);
    }

    /**
     * 匹配中國郵政編碼
     *
     * @param postcode 郵政編碼
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkPostcode(String postcode) {
        String regex = "[1-9]\\d{5}";
        return Pattern.matches(regex, postcode);
    }

    /**
     * 匹配IP地址(簡單匹配,格式,如:192.168.1.1,127.0.0.1,沒有匹配IP段的大小)
     *
     * @param ipAddress IPv4標準地址
     * @return 驗證成功返回true,驗證失敗返回false
     */
    public static boolean checkIpAddress(String ipAddress) {
        String regex = "[1-9](\\d{1,2})?\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))";
        return Pattern.matches(regex, ipAddress);
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
save_snippets.png

更多工具類,歡迎到我的 Github 上面檢視, CommonLibrary

參考文章

相關推薦

Android 常用表示式整理

前言 閒扯一下,已經有好久沒更新部落格了,記得上一篇部落格的更新時間為 2017-05-12 15:20。截止到今天,超過一百天沒更新了。 這篇部落格的內容大多數是從別的部落格摘抄過來的,寫這篇部落格的目的主要是整理正則表示式的文章,方便日後檢視。 java 正則表示式常用的字元說明常用的正則表示式java

常用表示式整理【轉載,防丟失】

轉載文章,好資源,防丟失。原文連結: http://blog.cspojie.cn/2017/09/26/常用的正則表示式整理/ 一、校驗數字的表示式 1 數字: ^[0-9]$ 2 n位的數字: ^\d{n}$ 3 至少n位的數字: ^\d{n,}$ 4 m-n位的數字:^

常用的 JS表示式整理

一、校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([

php 常用表示式彙總

1.    平時做網站經常要用正則表示式,下面是一些講解和例子,僅供大家參考和修改使用:  2.    "^\d+$"  //非負整數(正整數 + 0)  3.   &n

常用表示式符號

正則表示式總結: \b  : 單詞的開頭或結尾 .   : 除了換行符以外的任意字元 *    :前邊的內容可以連續重複使用任意次 \n    : 換行符 \d    :匹配一個數字 {n}

常用表示式收集

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

shell 常用表示式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

常用表示式大全,手機 電話 郵箱 身份證 最嚴格的驗證 IP地址 網址 日期等,一般前臺js驗證,來這裡就夠了

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

常用表示式(copy)

一、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0

常用表示式(高亮,markdown)

校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(

常用表示式_轉載

轉自網路: 常用正則表示式大全!(例如:匹配中文、匹配html)  匹配中文字元的正則表示式: [u4e00-u9fa5]      評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了    匹配雙位元組字元(包括漢字在內):[^x0

史上最全常用表示式大全

一、校驗數字的表示式   1. 數字:^[0-9]*$ 2. n位的數字:^\d{n}$ 3. 至少n位的數字:^\d{n,}$ 4. m-n位的數字:^\d{m,n}$ 5. 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6. 非零開頭的最多帶兩位小

常用表示式範例

、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$

Java中常用表示式

表示式                    含義  \\                  &

匹配任意字元(常用表示式的書寫)

 http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm   正則教程 (注:元字元包括\ | ( ) [ ] { } ^ $ * + ? . ) 匹配中文字元的正則表示式: [\u4e00-

常用表示式

概要: Java正則表示式的語法與示例 匹配驗證-驗證Email是否正確 在字串中查詢字元或者字串 常用正則表示式 正則表示式語法 匹配驗證-驗證Email是否正確 public static void main(String[] args) { // 要驗證的字串

常用表示式,手機號,郵箱,網址

// 判斷是否為手機號 isPoneAvailable: function (pone) { var myreg = /^[1][3,4,5,7,8][0-9]{9}$/; if (!myreg.test(pone)) { return false; } else { return true; } }, //

JavaScript表示式整理

只能輸入字串為數字:“^[-+]?[0-9]+\.[0-9]+$” 只能輸入數字:"^[0-9]*$" 只能輸入 n 位的數字:"^\d{n}$" 只能輸入至少 n 位的數字:"^\d{n,}$" 只能輸入 m ~ n 位的數字:"^\d{m,n}$" 只能輸入零和非零開頭

SAP ABAP常用表示式大全

特殊表示式 :   1.貨幣格式: '123123211312.333333'.replace(/(?=(?!^)(?:\d{3})+(?:\.|$))(\d{3}(\.\d+$)?)/g, ',$1') //輸出 123,123,211,312.333333  ps:TC

常用表示式 你要的都在這裡了

一、校驗數字的表示式 1 數字:1*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][