正則表達式(基礎(chǔ))
寫法
-js寫法var re = new RegExp("a","i");
-perl寫法var re = /a/ ;
量詞
{n} 正好出現(xiàn)n次
{n,m} 最少出現(xiàn)n次 最多出現(xiàn)m次
{n,} 最少n 最多不限
\d{8} 8個數(shù)字
[1-9]\d{7} 第一位是1-9的數(shù)字
常用的非打印字符
\w 英文數(shù)字下劃線
\s 空白字符
\g 匹配所有
\W (和小寫的相反)
\G 可以進行全局匹配
\S 非空白字符
常用的函數(shù)</p>
str.search(re);找出復(fù)合正則表達式缕贡,返回其下標(biāo)
str.match(re); 找出復(fù)合正則表達式羹饰,然后用數(shù)組存起來
實例
-寫出郵箱的正則
數(shù)字英文下劃線+@+數(shù)字英文 + . +一串英文
\w+ //(數(shù)字英文下劃線)
@
[a-z0-9]+ //(數(shù)字英文)
.
[a-z]+ //(一串英文)
因為正則的某些特性洽蛀,所有只要字符串的部分符合正則那么就可以匹配涵卵,
因此要在正則表達式中假如^ 和 $ 表示從頭到尾都要符合正則表達式
常用的正則表達式
漢字:^[\u4e00-\u9fa5]{0,}$
英文和數(shù)字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
長度為3-20的所有字符:^.{3,20}$
由26個英文字母組成的字符串:^[A-Za-z]+$
由數(shù)字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
由數(shù)字、26個英文字母或者下劃線組成的字符串:^\w+$ 或 ^\w{3,20}$
中文点额、英文履羞、數(shù)字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文枣申、英文、數(shù)字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
禁止輸入含有~的字符:[^~\x22]+
</br>
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})+/.?
InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手機號碼:^(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}$
電話號碼(“XXX-XXXXXXX”饮亏、”XXXX-XXXXXXXX”耍贾、”XXX-XXXXXXX”、”XXX-XXXXXXXX”路幸、”XXXXXXX”和”XXXXXXXX):^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$
國內(nèi)電話號碼(0511-4405222荐开、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
身份證號(15位、18位數(shù)字):^\d{15}|\d{18}$
短身份證號碼(數(shù)字劝赔、字母x結(jié)尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
帳號是否合法(字母開頭誓焦,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密碼(以字母開頭着帽,長度在6~18之間杂伟,只能包含字母、數(shù)字和下劃線):^[a-zA-Z]\w{5,17}$
強密碼(必須包含大小寫字母和數(shù)字的組合仍翰,不能使用特殊字符赫粥,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式:^\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)$
xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正則表達式:[\u4e00-\u9fa5] 雙字節(jié)字符:[^\x00-\xff] (包括漢字在內(nèi),可以用來計算字符串的長度(一個雙字節(jié)字符長度計2予借,ASCII字符計1))
空白行的正則表達式:\n\s*\r (可以用來刪除空白行)
HTML標(biāo)記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (網(wǎng)上流傳的版本太糟糕越平,上面這個也僅僅能部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力)
首尾空白字符的正則表達式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字符(包括空格灵迫、制表符秦叛、換頁符等等),非常有用的表達式)
騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數(shù)字)
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))
數(shù)字:^[0-9]*$
n位的數(shù)字:^\d{n}$
至少n位的數(shù)字:^\d{n,}$
m-n位的數(shù)字:^\d{m,n}$
零和非零開頭的數(shù)字:^(0|[1-9][0-9]*)$
非零開頭的最多帶兩位小數(shù)的數(shù)字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
帶1-2位小數(shù)的正數(shù)或負數(shù):^(\-)?\d+(\.\d{1,2})?$
正數(shù)瀑粥、負數(shù)挣跋、和小數(shù):^(\-|\+)?\d+(\.\d+)?$
有兩位小數(shù)的正實數(shù):^[0-9]+(.[0-9]{2})?$
有1~3位小數(shù)的正實數(shù):^[0-9]+(.[0-9]{1,3})?$
非零的正整數(shù):^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
非零的負整數(shù):^\-[1-9][]0-9″*$ 或 ^-[1-9]\d*$
非負整數(shù):^\d+$ 或 ^[1-9]\d*|0$
非正整數(shù):^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
非負浮點數(shù):^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
非正浮點數(shù):^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
正浮點數(shù):^[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]*))$
負浮點數(shù):^-([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]*)))$
浮點數(shù):^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$