<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                http://www.cnblogs.com/mephisto/p/3456992.html [TOC] 原地址:[http://pfeishao.blog.163.com/blog/static/18162337020112113130453/](http://pfeishao.blog.163.com/blog/static/18162337020112113130453/) ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ?IP的正則表達式 ------------------------------------------------------------------------ Pv4地址 正則表達式:^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$ 測試環境:Javascript/.Net/C++/JAVA 特點:匹配IPv4地址 IPv6地址 正則表達式:^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$ 測試環境:Javascript/.Net/C++/JAVA 特點:支持IPv6的基本格式 IPv6地址 正則表達式:^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}|:((:[\da?fA?F]1,4)1,6|:)|:((:[\da?fA?F]1,4)1,6|:)|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)|([\da?fA?F]1,4:)2((:[\da?fA?F]1,4)1,4|:)|([\da?fA?F]1,4:)2((:[\da?fA?F]1,4)1,4|:)|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)|([\da?fA?F]1,4:)4((:[\da?fA?F]1,4)1,2|:)|([\da?fA?F]1,4:)4((:[\da?fA?F]1,4)1,2|:)|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?|([\da?fA?F]1,4:)6:|([\da?fA?F]1,4:)6: 測試環境:Javascript/.Net/C++/JAVA 特點:支持壓縮 IPv6地址 正則表達式:^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|::([\da?fA?F]1,4:)0,4((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|::([\da?fA?F]1,4:)0,4((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)2:([\da?fA?F]1,4:)0,2((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)2:([\da?fA?F]1,4:)0,2((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)4:((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)4:((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?) 測試環境:Javascript/.Net/C++/JAVA 特點:只支持IPv6/IPv4混合地址。前面IPv6部分支持壓縮 IPv6地址 正則表達式:^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|::([\da?fA?F]1,4:)0,4((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|::([\da?fA?F]1,4:)0,4((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)2:([\da?fA?F]1,4:)0,2((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)2:([\da?fA?F]1,4:)0,2((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)4:((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|([\da?fA?F]1,4:)4:((25[0?5]|2[0?4]\d|[01]?\d\d?)\.)3(25[0?5]|2[0?4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}|:((:[\da?fA?F]1,4)1,6|:)|:((:[\da?fA?F]1,4)1,6|:)|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)|([\da?fA?F]1,4:)2((:[\da?fA?F]1,4)1,4|:)|([\da?fA?F]1,4:)2((:[\da?fA?F]1,4)1,4|:)|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)|([\da?fA?F]1,4:)4((:[\da?fA?F]1,4)1,2|:)|([\da?fA?F]1,4:)4((:[\da?fA?F]1,4)1,2|:)|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?|([\da?fA?F]1,4:)6:|([\da?fA?F]1,4:)6: 測試環境:Javascript/.Net/C++/JAVA 特點:支持所有格式的IPv6地址 分析: ? ? ? ?IPv4:通常用點分十進制表示IP地址。IP地址長4個字節共32位,點分十進制將其分為4部分,中間用“.”號分開,所以每部分共8位,二進制為“00000000”到“11111111”,十進制為“0”到“255”。 ? ? ? ?IPv6:由128位(8*16),分8段,每段16位,段與段之間用“:”分開,用十六進制表示,格式FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF,IPv6地址可以壓縮。 IPv4匹配: 0.0.0.0 255.255.255.255 192.168.1.1 0.0.0.1 01.1.1.1 5.025.25.25 IPv4不匹配: 111.111.111.256 IPv6匹配: 5e:0:0:0:0:0:5668:eeee 5e:0:0:023:0:0:5668:eeee 5e::5668:eeee ::1:8:8888:0:0:8 1:: ::1:2:2:2 :: IPv6不匹配: 5e::5668::eeee 55555:5e:0:0:0:0:0:5668:eeee IPv6/IPv4混合地址匹配: 11:11:e:1EEE:11:11:200.200.200.200 e:ee:5:e::0.0.0.254 ::EfE:120.0.0.1 ::120.0.0.1 ee:ee::11.11.11.125 另一個版本如下: ~~~ package com.hx78.regex; import java.util.regex.Pattern; public class IpTest1 { private static Pattern pattern; private static Pattern ptipv4; static { // ipv6 pattern = Pattern.compile("^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:)|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|([0-9A-Fa-f]{1,4}:(:[0-9A-Fa-f]{1,4}){1,6})|(:(:[0-9A-Fa-f]{1,4}){1,7})|(([0-9A-Fa-f]{1,4}:){6}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){5}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|([0-9A-Fa-f]{1,4}:(:[0-9A-Fa-f]{1,4}){0,4}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(:(:[0-9A-Fa-f]{1,4}){0,5}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}))$"); // ipv4 ptipv4 = Pattern.compile("^(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}$"); } public static void main( String[] args ) { System.out.println(pattern.matcher("2001:0DB8:0000:0023:0008:0800:200C:417A").matches()); System.out.println(pattern.matcher("2001:DB8:0:23:8:800:200C:417A").matches()); System.out.println(pattern.matcher("2001:DB8:0:23:8:800:192.1.0.0").matches()); System.out.println(pattern.matcher("2001:DB8:0::800:192.1.0.0").matches()); System.out.println(pattern.matcher("2001:DB8:0:23::192.1.0.0").matches()); System.out.println(pattern.matcher("::192.1.0.0").matches()); System.out.println(pattern.matcher("1:af::3").matches()); System.out.println(pattern.matcher("1:af::").matches()); System.out.println(pattern.matcher("::1:af:0").matches()); System.out.println(pattern.matcher("::0").matches()); System.out.println("---------------------"); System.out.println(pattern.matcher("+2001:0DB8:0000:0023:0008:0800:200C:417A").matches()); System.out.println(pattern.matcher("2001:0DB8:0z00:0023:0008:0800:200C:417A").matches()); System.out.println(pattern.matcher("2001:DB8:0:23:800::192.1.0.0.1").matches()); System.out.println(pattern.matcher("2001:DB8::23::800:192.1.0.0").matches()); System.out.println(pattern.matcher(":::").matches()); System.out.println(pattern.matcher("1:::2").matches()); System.out.println("---------------------"); System.out.println(ptipv4.matcher("1.1.0.1").matches()); System.out.println(ptipv4.matcher("123.1.0.19").matches()); System.out.println(ptipv4.matcher("255.255.255.255").matches()); System.out.println(ptipv4.matcher("0.0.0.0").matches()); System.out.println("---------------------"); System.out.println(ptipv4.matcher("-1.1.0.1").matches()); System.out.println(ptipv4.matcher("1.1b.0.1").matches()); System.out.println(ptipv4.matcher("1.01.0.1").matches()); System.out.println(ptipv4.matcher("1.1.300.1").matches()); System.out.println(ptipv4.matcher("1.1..1").matches()); System.out.println("##########true############"); System.out.println(pattern.matcher("5e:0:0:0:0:0:5668:eeee").matches()); System.out.println(pattern.matcher("5e:0:0:023:0:0:5668:eeee").matches()); System.out.println(pattern.matcher("5e::5668:eeee").matches()); System.out.println(pattern.matcher("::1:8:8888:0:0:8").matches()); System.out.println(pattern.matcher("1::").matches()); System.out.println(pattern.matcher("::1:2:2:2").matches()); System.out.println(pattern.matcher("::").matches()); System.out.println("---------false------------"); System.out.println(pattern.matcher("5e::5668::eeee").matches()); System.out.println(pattern.matcher("55555:5e:0:0:0:0:0:5668:eeee").matches()); System.out.println("--------true-------------"); System.out.println(ptipv4.matcher("0.0.0.0").matches()); System.out.println(ptipv4.matcher("255.255.255.255").matches()); System.out.println(ptipv4.matcher("192.168.1.1").matches()); System.out.println(ptipv4.matcher("0.0.0.1").matches()); System.out.println(ptipv4.matcher("01.1.1.1").matches()); System.out.println(ptipv4.matcher("5.025.25.25").matches()); System.out.println("---------false------------"); System.out.println(ptipv4.matcher("111.111.111.256").matches()); } } ~~~ ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ?小數的正則表達式 ------------------------------------------------------------------------ 小數 正則表達式:^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$ 測試環境:.NET/Javascript 分析: ? ? ? ?不考濾科學計數法。 匹配: 0.012 0.000000005 -0.000000005 1.00001 -1.000000010 24.215 +2.25 1.0 ? ? ? ? 不匹配: 0.0 0000.02 001.001 1.1.1 ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ?E-mail地址的正則表達式 ------------------------------------------------------------------------ E-mail地址 正則表達式:^[a-zA-Z0-9]((?測試環境:.NET/C++ 特點:域名部分可以為IP地址,不考濾域名部分為主機名的情況,域名部分不能保證總長度在256字符以內。 分析: ? ? ? ?E-mail地址分三部分: ? ? ? ?第一部分:用戶帳號。 ? ? ? ?第二部分:“@”符號(英文單詞“at”的符號化)。 ? ? ? ?第三部分:域名或者IP地址。 ? ? ? ?您的郵箱名應該由a-Z、A-Z、0-9開頭,郵箱名可由英文字母、0~9的數字、點、減號或下劃線組成;郵箱名長度為3~18個字符;郵箱名不能以點、減號或下劃線結尾,不能出現連續兩個或兩個以上的點、減號。 匹配: 321635@qq.com 3565352@10.0.0.1 dslfklds3546_.-dl@dlsk.com lsdkf__dlskflk@ds.com 不匹配: adfd@hostname sdfsdlk..ldsfil@ds.com aa@d.com -dfddsf@ad.com ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ?手機號碼的正則表達式 ------------------------------------------------------------------------ 手機 正則表達式:^((\+86)?|\+86\+86)0?1[358]\d{9}$ 測試環境:.Net 分析: ? ? ? ?手機號碼長度11位,以 1 開頭,第二位是 3、5 或者 8 (好像有了189開頭的號碼了)。 匹配: 13111111111 015111111111 +8613111111111 +8615111111111 +86015111111111 (+86)13111111111 不匹配: 11111111111 131111111 151111111111 ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ?域名的正則表達式 ------------------------------------------------------------------------ 正則表達式:^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$ 測試環境:.NET/Javascript/C++ 特點:無法保證全長在256字符以內。 分析: ? ? ? ?一個完整的域名,由根域、頂級域、二級、三級……域名構成,每級域名之間用點分開,每級域名由字母、數字和減號構成(第一個字母不能是減號),不區分大小寫,單個域長度不超過63,完整的域名全長不超過256個字符。在DNS系統中,全名是以一個點“.”來結束的,例如“www.nit.edu.cn.”。沒有最后的那個點則表示一個相對地址。 匹配: www.baidu.com sd-.2222222.22222222222.222222222222222.22222222.222222222.dfsd.cslkd 不匹配: sdlkk.ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd.cn ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ?固定電話的正則表達式 ------------------------------------------------------------------------ 區號:^0?([1-9]\d|[3-9][13579]\d|[3-9][24680]\d{2})$ 國家代碼:+86 正則表達式:\+86 區號-市話號碼 ? ? ? ? ? ? ? ? ? ? ? ?如:10-11111111,010-11111111 正則表達式:^0?([1-9]\d-\d{6,8}|[3-9][13579]\d-\d{6,7}|[3-9][24680]\d{2}-\d{6})$ 區號-市話號碼-分機 ? ? ? ? ? ? ? ? ? ? ? ? ?如:10-11111111-111,010-11111111-111 正則表達式:^0?([1-9]\d-\d{6,8}|[3-9][13579]\d-\d{6,7}|[3-9][24680]\d{2}-\d{6})(-\d{3})$ 區號<這里是相連的>市話 ? ? ? ? ? ? ? ?如:1011111111,01011111111 正則表達式:^0?([1-9]\d\d{6,8}|[3-9][13579]\d\d{6,7}|[3-9][24680]\d{2}\d{6})$ 所有格式:^((\+86)?|\+86\+86|\+86\s)0?([1-9]\d-?\d{6,8}|[3-9][13579]\d-?\d{6,7}|[3-9][24680]\d{2}-?\d{6})(-\d{3})?$ 分析: ? ? ? ?手機號碼:11位,以 1 開頭,第二位是 3 或者 5。沒考濾服務器的號碼。 ? ? ? ?固定電話:總長10位,區號=10-4位,市話長度=10-N,可能還有3位分機號。開頭的“0”不是區號部分,而是供長途直拔電話業務使用的字頭。 ? ? ? ?手機: 國家代碼+手機號 ? ? ? ?電話:國家代碼+區號+電話號碼 原郵電部對此有如下規定:(1)北京、天津等區號兩位的城市市話號碼長度不大于8位,因為市 話號碼首位不能為1、0,最終容量可達八千萬部。(2)各省會城市和大城市的區號三位,第一位選取“3、4、5、6、7、8、9”共七個數字,第二位選取單數“1、3、5、7、9”共五個數字,第三位隨意。(3)各縣城及小城市的區號四位,第一位選取“3、4、5、6、7、8、9”共七個數字,第二位選取雙數“2、4、6、8、0”共五個數字,第三、四位隨意。 匹配: 1334567890 031-3145678-123 010-11111111 (+86)010-13901691-123 不匹配: +861678901 (+89)07912140337 ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?日期的正則表達式 ------------------------------------------------------------------------ 分析: ? ? ? ?中國式日期為“年-月-日” ? ? ? ?年:1到任意在于1的整數,不能“0”開頭。 ? ? ? ?月:1到12。 ? ? ? ?日:1、3、5、7、8、10、12月有31天;4、6、9、11月有30天,閏年2月份有29天,否則28天。 ? ? ? ?閏年的條件是符合下面二者之一: ? ? ? ? ? ? ? ?(1)能被4整除,但不能被100整除。 ? ? ? ? ? ? ? ?(2)能被4整除,又能被400整除。//縮寫為能被400整除。 ? ? ? ?#00格式(#代表任何數),只要#能被4整除,#00就一定能被400整除(閏年)。 ? ? ? ?非#00格式(也就不能被100整除了),能被4整除。 第一年的2月份都有28天,只要是閏年還要加一天。現在的任務是找出閏年。 100以內能被4整除的有: 00 04 08 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 他們的表達式為:(0?[048]|[2468][048]|[13579][26]) #00一定會被4整除,所以,只要#能被4整除,#00就一定能被400整除,他就是閏年。 #00格式閏年:(\d*(0?[048]|[2468][048]|[13579][26])00) 因為不能為#00格式,所以要從上面的表中刪除00這個結果。 非#00格式閏年:(\d*(0?[48]|[2468][048]|[13579][26])) 把上面兩個正則表達式合并 閏年:(\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26])) 整數01-28:(2[0-8]|[01]\d) 整數01-30:(30|[012]\d) 整數01-31:(3[01]|[012]\d) 整數1-28:(2[0-8]|1\d|[1-9]) 整數1-30:(30|[12]\d|[1-9]) 整數1-31:(3[01]|[12]\d|[1-9]) 把上面兩組格式合并在一起: 整數1-28:(2[0-8]|1\d|0?[1-9]) 整數1-30:(30|[12]\d|0?[1-9]) 整數1-31:(3[01]|[12]\d|0?[1-9]) 現在我們把它們全部組合成中國“年-月-日”格式 ^((\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26]))-0?2-29)|[1?9]\d??((0?[13578]|10|12)?(3[01]|[12]\d|0?[1?9])|(0?[469]|11)?(30|[12]\d|0?[1?9])|(0?2)?(2[0?8]|1\d|0?[1?9]))|[1?9]\d??((0?[13578]|10|12)?(3[01]|[12]\d|0?[1?9])|(0?[469]|11)?(30|[12]\d|0?[1?9])|(0?2)?(2[0?8]|1\d|0?[1?9])) 匹配: 1-1-1 244-02-29 10-10-10 2000-2-29 2008-2-29 不匹配: 2009-2-29 2009-13-10 1005-12-65 中國“年/月/日”格式 ^((\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26]))\/0?2\/29)|[1?9]\d?\/((0?[13578]|10|12)\/(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\/(30|[12]\d|0?[1?9])|(0?2)\/(2[0?8]|1\d|0?[1?9]))|[1?9]\d?\/((0?[13578]|10|12)\/(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\/(30|[12]\d|0?[1?9])|(0?2)\/(2[0?8]|1\d|0?[1?9])) 匹配: 1/1/1 244/02/29 10/10/10 2000/2/29 2008/2/23 不匹配: 2009/2/29 2009/13/10 1005/12/65 中國“年.月.日”格式 ^((\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26]))\.0?2\.29)|[1?9]\d?\.((0?[13578]|10|12)\.(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\.(30|[12]\d|0?[1?9])|(0?2)\.(2[0?8]|1\d|0?[1?9]))|[1?9]\d?\.((0?[13578]|10|12)\.(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\.(30|[12]\d|0?[1?9])|(0?2)\.(2[0?8]|1\d|0?[1?9])) 匹配: 1.1.1 244.02.29 10.10.10 2000.2.29 2008.2.23 不匹配: 2009.2.29 2009.13.10 1005/12/65 中國“年/月/日”、“年-月-日”、“年.月.日”格式 (^((\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26]))-0?2-29)|[1?9]\d??((0?[13578]|10|12)?(3[01]|[12]\d|0?[1?9])|(0?[469]|11)?(30|[12]\d|0?[1?9])|(0?2)?(2[0?8]|1\d|0?[1?9]))|[1?9]\d??((0?[13578]|10|12)?(3[01]|[12]\d|0?[1?9])|(0?[469]|11)?(30|[12]\d|0?[1?9])|(0?2)?(2[0?8]|1\d|0?[1?9])))|(^((\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26]))\/0?2\/29)|[1?9]\d?\/((0?[13578]|10|12)\/(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\/(30|[12]\d|0?[1?9])|(0?2)\/(2[0?8]|1\d|0?[1?9]))|[1?9]\d?\/((0?[13578]|10|12)\/(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\/(30|[12]\d|0?[1?9])|(0?2)\/(2[0?8]|1\d|0?[1?9])))|(^((\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26]))\.0?2\.29)|[1?9]\d?\.((0?[13578]|10|12)\.(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\.(30|[12]\d|0?[1?9])|(0?2)\.(2[0?8]|1\d|0?[1?9]))|[1?9]\d?\.((0?[13578]|10|12)\.(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\.(30|[12]\d|0?[1?9])|(0?2)\.(2[0?8]|1\d|0?[1?9]))) 匹配: 1/1/1 244/02/29 10/10/10 2000/2/29 2008/2/29 244-02-29 10-10-10 2000-2-28 2008.2.29 不匹配: 1-1/1 2009/2/29 2009/13/10 1005/12/65 2009-2-29 2009-13-10 1005-12-65 中國“年月日”格式(用于身份證編碼等),年由4位數表示,月2位,日2位 ^(((0[048]|[2468][048]|[13579][26])00|\d\d(0[48]|[2468][048]|[13579][26]))0229)|\d4((0[13578]|10|12)(3[01]|[12]\d|0[1?9])|(0[469]|11)(30|[12]\d|0[1?9])|02(2[0?8]|1\d|0[1?9]))|\d4((0[13578]|10|12)(3[01]|[12]\d|0[1?9])|(0[469]|11)(30|[12]\d|0[1?9])|02(2[0?8]|1\d|0[1?9])) 匹配: 19880329 20001220 20080229 不匹配: 1988329 20090229 20091310 10051265 歐美“月/日/年”格式 ^(0?2\/29\/(\d*(0?[048]|[2468][048]|[13579][26])00|\d*(0?[48]|[2468][048]|[13579][26])))|((0?[13578]|10|12)\/(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\/(30|[12]\d|0?[1?9])|(0?2)\/(2[0?8]|1\d|0?[1?9]))\/[1?9]\d?|((0?[13578]|10|12)\/(3[01]|[12]\d|0?[1?9])|(0?[469]|11)\/(30|[12]\d|0?[1?9])|(0?2)\/(2[0?8]|1\d|0?[1?9]))\/[1?9]\d? 匹配: 1/1/1 02/29/244 10/10/10 02/29/2000 2/29/2008 不匹配: 2/29/2009 13/10/2009 12/65/1005 ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?時間的正則表達式 ------------------------------------------------------------------------ 時間 正則表達式: ^([01]?\d|2[123]):([0-4]?\d|5\d)(:([0-4]?\d|5\d)(\.\d+|-?0\.\d*[1-9]\d*)? )?(am|AM|pm|PM)?$ 缺點: 分析: ? ? ? ?時間格式:HH:mm:ss [am|pm|AM|PM] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HH:mm [am|pm|AM|PM] ? ? ? ?HH在0-23之間,mm在0-59之間,ss是大于等于0小于60的小數或整數。 匹配: 1:1:1 am 23:59:59.999 21:58 不匹配: 24:20:20 ------------------------------------------------------------------------ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?身份證號碼的正則表達式 ------------------------------------------------------------------------ 國內的身份證號碼 正則表達式:(^\d{6}((0[48]|[2468][048]|[13579][26])0229|\d\d(0[13578]|10|12)(3[01]|[12]\d|0[1-9])|(0[469]|11)(30|[12]\d|0[1-9])|(02)(2[0-8]|1\d|0[1-9]))\d{3})|(\d6((2000|(19|21)(0[48]|[2468][048]|[13579][26]))0229|(((20|19)\d\d)|2100)(0[13578]|10|12)(3[01]|[12]\d|0[1?9])|(0[469]|11)(30|[12]\d|0[1?9])|(02)(2[0?8]|1\d|0[1?9]))\d3[\dX])|(\d6((2000|(19|21)(0[48]|[2468][048]|[13579][26]))0229|(((20|19)\d\d)|2100)(0[13578]|10|12)(3[01]|[12]\d|0[1?9])|(0[469]|11)(30|[12]\d|0[1?9])|(02)(2[0?8]|1\d|0[1?9]))\d3[\dX]) 一代身份證號碼:^\d{6}((0[48]|[2468][048]|[13579][26])0229|\d\d(0[13578]|10|12)(3[01]|[12]\d|0[1-9])|(0[469]|11)(30|[12]\d|0[1-9])|(02)(2[0-8]|1\d|0[1-9]))\d{3}$ 二代身份證號碼:^\d{6}((2000|(19|21)(0[48]|[2468][048]|[13579][26]))0229|(((20|19)\d\d)|2100)(0[13578]|10|12)(3[01]|[12]\d|0[1-9])|(0[469]|11)(30|[12]\d|0[1-9])|(02)(2[0-8]|1\d|0[1-9]))\d{3}[\dX]$ 測試環境:C++/.NET/JAVA/Javascript 屬性:多行模式,大小寫敏感 特點:不能驗證二代身份證校驗碼位的正確性。 分析: 一代15位身份證號碼:六位數字地址碼,第7、8位為出生年份(兩位數),第9、10位為出生月份,第11、12位代表出生日期,第15位代表性別,奇數為男,偶數為女。 二代18位身份證號碼:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。? ? ? ? ?生日期碼(身份證第七位到第十四位)表示編碼對象出生的年、月、日,其中年份用四位數字表示,年、月、日之間不用分隔符。例如:1981年05月11日就用19810511表示。 ? ? ? ?順序碼(身份證第十五位到十七位)為同一地址碼所標識的區域范圍內,對同年、月、日出生的人員編定的順序號。其中第十七位奇數分給男性,偶數分給女性。? ? ? ? ?校驗碼(身份證最后一位)是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。? 1984年8月30日我國頒發了第一批身份證(一代身份證),可由此 假設1.持有身份證的人中最老的在1900年出生。 假設2.一代身份證持有人在1900-2010年間出生。 假設3.二代身份證持有人在1900-2100年間出生。 1900-2100年間 閏年:(2000|(19|21)(0[48]|[2468][048]|[13579][26])) 平年:(19|21)(0?[1235679]|[2468][1235679]|[13579][01345789]) 匹配: 34052419800229001X 340524800229001 340524199001010013 不匹配: 34052419800101001a 21552418801010011 340524850229001 34052422800110081X 34052419800229001x!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看