馬上收藏!史上最全正則表達式合集

收藏待读

馬上收藏!史上最全正則表達式合集

今天閑話少說,小肆直接給大家上乾貨,收到的同時別忘了關注我哦。

前言

正則表達式,新手見它的感覺就是「這都什麼玩意,亂七八糟的,完全不知所云」,但學會它就會體驗那種一行代碼抵數十上百行,效率飛起的感覺,簡直不要太爽。今天小肆先把我自己收藏的一些正則表達式寫法分享給大家,當然想深入學習如何寫正則表達式,可以去w3c看看教程。

乾貨

一.校驗數字

  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*$
  12. 非零的負整數: ^-[1-9][]0-9"*$
  13. 非負整數: ^d+$
  14. 非正整數: ^-[1-9]d*|0$
  15. 非負浮點數: ^d+(.d+)?$
  16. 非正浮點數: ^((-d+(.d+)?)|(0+(.0+)?))$
  17. 正浮點數:^[1-9]d .d |0.d [1-9]d $
  18. 負浮點數: ^-([1-9]d*.d*|0.d*[1-9]d*)$
  19. 浮點數: ^(-?d+)(.d+)?$

二.效驗字符

  1. 漢字: ^[u4e00-u9fa5]{0,}$
  2. 英文和數字: ^[A-Za-z0-9]+$
  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+$
  9. 中文、英文、數字包括下劃線: ^[u4E00-u9FA5A-Za-z0-9_]+$
  10. 中文、英文、數字但不包括下劃線等符號: ^[u4E00-u9FA5A-Za-z0-9]+$
  11. 可以輸入含有 ^%&',;=?$" 等字符: [^%&',;=?$x22]+
  12. 禁止輸入含有~的字符: [^~x22]+

四.特殊需求表達式

  1. Email地址: ^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
  2. 手機號碼: ^(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}$ (國內 13、15、18開頭的手機號正則表達式,可根據目前國內收集號擴展前兩位開頭號碼)
  3. 電話號碼(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX): ^((d{3,4}-)|d{3.4}-)?d{7,8}$
  4. 國內電話號碼(0511-4405222、021-87888822): d{3}-d{8}|d{4}-d{7}
  5. 身份證號(15位): ^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$
  6. 身份證號碼(18位): ^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$
  7. 帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  8. 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線): ^[a-zA-Z]w{5,17}$
  9. 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-16之間): ^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$
  10. 日期格式: ^d{4}-d{1,2}-d{1,2}
  11. 一年的12個月(01~09和1~12): ^(0?[1-9]|1[0-2])$
  12. 一個月的31天(01~09和1~31): ^((0?[1-9])|((1|2)[0-9])|30|31)$
  13. xml文件: ^([a-zA-Z]+-?)+[a-zA-Z0-9]+.[x|X][m|M][l|L]$
  14. 中文字符的正則表達式: [u4e00-u9fa5]
  15. 雙位元組字符: [^x00-xff] (包括漢字在內,可以用來計算字符串的長度(一個雙位元組字符長度計2,ASCII字符計1))
  16. 空白行的正則表達式: ns*r (可以用來刪除空白行)
  17. 首尾空白字符的正則表達式: ^s*|s*$(^s*)|(s*$) (可以用來刪除行首行尾的空白字符(包括空格、製表符、換頁符等等),非常有用的表達式)
  18. 騰訊QQ號: [1-9][0-9]{4,11} (騰訊QQ號從10000開始)
  19. 中國郵政編碼: [1-9]d{5}(?!d) (中國郵政編碼為6位數字)
  20. IP-v4地址: b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b (提取IP地址時有用)
  21. 校驗IP-v6地址: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
  22. 子網掩碼: ((?:(?:25[0-5]|2[0-4]d|[01]?d?d).){3}(?:25[0-5]|2[0-4]d|[01]?d?d))
  23. 校驗日期: ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ (「yyyy-mm-dd「 格式的日期校驗,已考慮平閏年。)
  24. 抽取注釋:
  25. 查找CSS屬性: ^s*[a-zA-Z-]+s*[:]{1}s[a-zA-Z0-9s.#]+[;]{1}
  26. 提取頁面超鏈接: (]*)(href="https?://)((?!(?:(?:www.)?'.implode('|(?:www.)?', $follow_list).'))[^"]+)"((?!.*brel=)[^>]*)(?:[^>]*)>
  27. 提取網頁圖片: ]*[src] *= *["']{0,1}([^"' >]*)
  28. 提取網頁顏色代碼: ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
  29. 文件擴展名效驗: ^([a-zA-Z]:|\)\([^\]+\)*[^/:*?"|]+.txt(l)?$
  30. 判斷IE版本: ^.*MSIE [5-8](?:.[0-9]+)?(?!.*Trident/[5-9].0).*$

附送大家一個網上找到的語法圖

馬上收藏!史上最全正則表達式合集

原文 : SegmentFault

相關閱讀

免责声明:本文内容来源于SegmentFault,已注明原文出处和链接,文章观点不代表立场,如若侵犯到您的权益,或涉不实谣言,敬请向我们提出检举。