在遇到需要用正則校驗數(shù)據(jù)時,往往是在網(wǎng)上去找很久,結(jié)果找來的還是不很符合要求。所以我最近把開發(fā)中常用的一些正則表達式整理了一下,在這里分享一下。就當(dāng)作筆記
1.基礎(chǔ)
\d 匹配一個數(shù)字字符。等價于[0-9]。grep 要加上-P,perl正則支持
\D 匹配一個非數(shù)字字符。等價于[^0-9]。grep要加上-P,perl正則支持
\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_]”,這里的”單詞”字符使用Unicode字符集。
\W 匹配任何非單詞字符。等價于“[^A-Za-z0-9_]”。
\xn 匹配n,其中n為十六進制轉(zhuǎn)義值。十六進制轉(zhuǎn)義值必須為確定的兩個數(shù)字長。例如,“\x41”匹配“A”?!癨x041”則等價于“\x04&1”。正則表達式中可以使用ASCII編碼。
\num 匹配num,其中num是一個正整數(shù)。對所獲取的匹配的引用。例如,“(.)\1”匹配兩個連續(xù)的相同字符。
\n 標識一個八進制轉(zhuǎn)義值或一個向后引用。如果\n之前至少n個獲取的子表達式,則n為向后引用。否則,如果n為八進制數(shù)字(0-7),則n為一個八進制轉(zhuǎn)義值。
\nm 標識一個八進制轉(zhuǎn)義值或一個向后引用。如果\nm之前至少有nm個獲得子表達式,則nm為向后引用。如果\nm之前至少有n個獲取,則n為一個后跟文字m的向后引用。如果前面的條件都不滿足,若n和m均為八進制數(shù)字(0-7),則\nm將匹配八進制轉(zhuǎn)義值nm。
\nml 如果n為八進制數(shù)字(0-7),且m和l均為八進制數(shù)字(0-7),則匹配八進制轉(zhuǎn)義值nml。
\un 匹配n,其中n是一個用四個十六進制數(shù)字表示的Unicode字符。例如,\u00A9匹配版權(quán)符號(?)。
2.常用
^[0-9]*$數(shù)字
^\d{m,n}$m-n位的數(shù)字
^[0-9]+(.[0-9]{2})?$有兩位小數(shù)的正實數(shù)
^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$浮點數(shù)
^(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}$手機號碼
/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/Email地址
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?域名
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$URL
^\d{15}|\d{18}$身份證號(15位、18位數(shù)字)
^\d{4}-\d{1,2}-\d{1,2}日期格式
[\u4e00-\u9fa5]中文字符的正則表達式
^[ァ-ヶー]{1,45}$日語的正則表達式
/x3130-/x318F(韓文
/xAC00-/xD7A3(韓文)
[1-9][0-9]{4,}騰訊QQ號
[1-9]\d{5}(?!\d)中國郵政編碼
^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$IP地址
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$xml文件
^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$正浮點數(shù)
密碼必須包含:半角數(shù)字、大寫英文,小寫英文、標點符號這4類中至少3種:^(?![0-9a-z]+$)(?![0-9A-Z]+$)(?![0-9!#\$%&=|\-\^@\[:\]\,\./\+\?]+$)(?![a-z!#\$%&=|\-\^@\[:\]\,\./\+\?]+$)(?![a-zA-Z]+$)(?![A-Z!#\$%&=|\-\^@\[:\]\,\./\+\?]+$)[a-zA-Z0-9!#\$%&=|\-\^@\[:\]\,\./\+\?]{8,16}$(特殊字符根據(jù)需要添加,個別字符需要轉(zhuǎn)譯)