在遇到需要用正則校驗數(shù)據(jù)時蒸辆,往往是在網(wǎng)上去找很久征炼,結(jié)果找來的還是不很符合要求。所以我最近把開發(fā)中常用的一些正則表達式整理了一下躬贡,在這里分享一下谆奥。就當作筆記
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)譯)