【copy】必備之常用正則表達式 By 其他博主
熟練而優雅的使用正則,對於程序員來講,實在太有意義了(即便非此類者,也是好處多多);它輔助處理復雜的文本查詢和字符串操作,不僅能用之於代碼,還能雅之於編輯器,瀏覽器,Terminal等,實在是編碼居家必備之優技。而正則表達式,若要快速掌握也是不易,所以此文存在的意義,即匯集些常用的正則表達式,以備不時之需。
在開篇之前,推薦幾篇常看看的文章,以及幾個正則表達式編輯器(在線測試工具):
正則表達式30分鐘入門教程
59分鐘學會正則表達式
8 Regular Expressions You Should Know
- Regex-chinaz
- Debuggex
- PyRegex
- Regexper
- Regex-oschina
一、校驗數字的表達式
1,數字:
1 | ^[0-9]*$ |
2,n 位的數字:
1 | ^\d{n}$ |
3,至少 n 位的數字:
1 | ^\d{n,}$ |
4,m-n 位的數字:
1 | ^\d{m,n}$ |
5,零和非零開頭的數字:
1 | ^(0|[1-9][0-9]*)$ |
6,非零開頭的最多帶兩位小數的數字:
1 | ^([1-9][0-9]*)+(.[0-9]{1,2})?$ |
7,帶1-2位小數的正數或負數:
1 | ^(-)?\d+(.\d{1,2})?$ |
8,正數、負數、和小數:
1 | ^(-|+)?\d+(.\d+)?$ |
9,有兩位小數的正實數:
1 | ^[0-9]+(.[0-9]{2})?$ |
10,有1~3位小數的正實數:
1 | ^[0-9]+(.[0-9]{1,3})?$ |
11,非零的正整數:
1 | ^[1-9]\d$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]*$ |
12,非零的負整數:
1 | ^-[1-9][0-9]*$ 或 ^-[1-9]\d*$ |
13,非負整數:
1 | ^\d+$ 或 ^[1-9]\d*|0$ |
14,非正整數:
1 | ^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ |
15,非負浮點數:
1 2 | ^\d+(.\d+)?$ 或 ^[1-9]\d.\d|0.\d[1-9]\d|0?.0+|0$ |
16,非正浮點數:
1 2 | ^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d.\d|0.\d[1-9]\d))|0?.0+|0$ |
17,正浮點數:
1 | ^[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 | ^-([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,浮點數:
1 2 | ^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d.\d|0.\d[1-9]\d|0?.0+|0)$ |
二、校驗字符的表達式
1, 漢字:
1 | ^[\u4e00-\u9fa5]{0,}$ |
2, 英文和數字:
1 | ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ |
3, 長度為3-20的所有字符:
1 | ^.{3,20}$ |
4, 由26個英文字母組成的字符串:
1 | ^[A-Za-z]+$ |
5, 由26個大寫英文字母組成的字符串:
1 | ^[A-Z]+$ |
6, 由26個小寫英文字母組成的字符串:
1 | ^[a-z]+$ |
7, 由數字和26個英文字母組成的字符串:
1 | ^[A-Za-z0-9]+$ |
8, 由數字、26個英文字母或者下劃線組成的字符串:
1 | ^\w+$ 或 ^\w{1,20}$ |
9, 中文、英文、數字包括下劃線:
1 | ^[\u4E00-\u9FA5A-Za-z0-9_]+$ |
10, 中文、英文、數字但不包括下劃線等符號:
1 | ^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$ |
11, 可以輸入含有^%&’,;=?$\”等字符:
1 | [^%&‘,;=?$\x22]+ |
12, 禁止輸入含有~的字符:
1 | [^~\x22]+ |
13, 不以xxx(如 jeffjade )開頭(/結尾)的字符串
1 2 | ^(?!jeffjade).*$ ^.*?(?<!jeffjade)$ |
三,特殊需求表達式
1, Email地址:
1 2 | ^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$ 或 \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14} |
2, 域名地址:
1 | [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? |
3, 手機號碼:
1 | ^(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}$ |
4, 身份證號(15位、18位數字):
1 | ^\d{15}|\d{18}$ |
5, 是否合法Url地址
1 2 3 4 5 | // 必須包含http or https https?:\/\/(www\.)?[[email protected]:%._\\+~#=]{2,256}\.[a-z]{2,6}\b([[email protected]:%_\\+.~#?&//=]*) // 不必包含http or https [[email protected]:%._\\+~#=]{2,256}\.[a-z]{2,6}\b([[email protected]:%_\\+.~#?&//=]*) |
6, 是否合法帳號::
1 2 3 4 5 | // 允許3到16個字節,僅包含字母或數字 ^[a-zA-Z0-9]{3,16}$ // 字母開頭,允許5-16字節,允許字母數字下劃線 ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ |
7, 是否合法密碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // 至少八個字符,至少一個字母和一個數字: ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$ // 至少八個字符,至少一個字母,一個數字和一個特殊字符: ^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$ // 最少八個字符,至少一個大寫字母,一個小寫字母和一個數字 "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$" // 至少八個字符,至少一個大寫字母,一個小寫字母,一個數字和一個特殊字符: "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,}" // 最少八個最多十個字符,至少一個大寫字母,一個小寫字母,一個數字和一個特殊字符: "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,10}" |
8, 是否合法 Img 標簽
1 | <img.*\ssrc=.*?> |
【copy】必備之常用正則表達式 By 其他博主