正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
列目錄時, dir *.txt或ls *.txt中的*.txt就不是一個正則表達式,因為這里*與正則式的*的含義是不同的。
構造正則表達式的方法和創建數學表達式的方法一樣。也就是用多種元字符與運算符可以將小的表達式結合在一起來創建更大的表達式。正則表達式的組件可以是單個的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。
正則表達式是由普通字符(例如字符 a 到 z)以及特殊字符(稱為"元字符")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
下面是小編日常整理了工作中常用的一些正則表達式,常用的正則驗證表達式:
數字相關的正則表達式
數字:^[0-9]*$
n位定長的數字:^/d{n}$
m-n位之間的數字:^/d{m,n}$
零和非零開頭的數字:^(0|[1-9][0-9]*)$
非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
帶1-2位小數的正數或負數:^(/-)?/d+(/./d{1,2})?$
正數、負數、和小數:^(/-|/+)?/d+(/./d+)?$
有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
正整數:^/d+$ 或 ^[1-9]/d*|0$
負整數:^-[1-9]/d*|0$ 或 ^((-/d+)|(0+))$
正浮點數:^[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]*))$
負浮點數:^-([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]*)))$
浮點數:^(-?/d+)(/./d+)?$ 或 ^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$
字符相關的正則表達式
漢字:^[/u4e00-/u9fa5]{0,}$
長度為3-20的所有字符:^.{3,20}$
由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
由數字、26個英文字母或者下劃線組成的字符串:^/w+$ 或 ^/w{3,20}$
中文、英文、數字包括下劃線:^[/u4E00-/u9FA5A-Za-z0-9_]+$
中文、英文、數字但不包括下劃線等符號:^[/u4E00-/u9FA5A-Za-z0-9]+$ 或 ^[/u4E00-/u9FA5A-Za-z0-9]{2,20}$
帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]/w{5,17}$
強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間):^(?=.*/d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
固定格式約定俗成的正則表達式
Email地址:^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$
網站域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
URL網址:^http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)?$
手機號碼:^(13[0-9]|17[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}$
電話號碼(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^(/(/d{3,4}-)|/d{3.4}-)?/d{7,8}$
國內電話號碼(0511-4405222、021-87888822):/d{3}-/d{8}|/d{4}-/d{7}
身份證號(15位、18位數字):^/d{15}|/d{18}$
日期格式:^/d{4}-/d{1,2}-/d{1,2}
一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$
一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
騰訊QQ號:[1-9][0-9]{4,8} (騰訊QQ號從10000開始,目前最長為10位)
中國郵政編碼:[1-9]/d{5}(?!/d) (中國郵政編碼為6位數字)
IP地址:/d+/./d+/./d+/./d+ (提取IP地址時有用)
IP地址:((?:(?:25[0-5]|2[0-4]//d|[01]?//d?//d)//.){3}(?:25[0-5]|2[0-4]//d|[01]?//d?//d))
以上所述是小編給大家介紹的常用的正則表達式大全(數字、字符、固定格式),希望對大家有所幫助!