1.常用的正則表達式集合
(1)匹配單箇中文字符:[\u4e00-\u9fa5],這是指unicode中文字符範圍;
(2)匹配空白行:\n\s*\r
(3)匹配郵箱地址: [\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
(4)匹配網址url:[a-zA-z]+://[^\s]*
(5)匹配國內的電話號碼:\d{3}-\d{8}|\d{4}-\{7,8}
(6)匹配QQ號碼:[1-9][0-9]{4,}
(7)匹配國內郵政編碼:[1-9]\d{5}(?!\d)
(8)匹配身份證號碼:^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
(9)匹配年-月-日時間格式:([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
(10)匹配正整數:^[1-9]\d*$
(11)匹配負整數:^-[1-9]\d*$
(12)匹配整數:^-?[1-9]\d*$
(13)匹配非負整數:^[1-9]\d*|0$
(14)匹配非正整數:^-[1-9]\d*|0$
(15)匹配正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
(16)匹配負浮點數:^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$
2.學習正則前所需要了解的幾個正則的概念,按照這個思路瞭解下正則能做哪些事情,看起正則源碼會事半功倍。
(1)元字符:正則裏面用於定義規則的字符;
(2)字符轉義:查找元字符本身,要加上\來轉義;
(3)如何重複,表達式重複表示:*(>=1)、+(>=1)、?(0 or 1)、{n}(n次)、{n,}(n次或更多次),{n,m}(n-m次);
(4)非元字符的字符如何表示?直接列出來就行了;
(5)分支條件:一個表達式能同時滿足幾種可能,相當於在一個表達式中存在幾種“或”的關係:用“|”把分支條件隔開即可;
(6)分組/子表達式:用()來表示分組/子表達式,以方便指定重複次數;
(7)反義,就是匹配出了某個規則以外的內容:
\W匹配不是字母、數字、下劃線、漢字的字符;
\S匹配任意不是空白符的字符;
\D匹配任意非數字的字符;
\B匹配任意不是單詞開頭或者結束的字符;
[^x]匹配除了x以外的任意字符;
[^aeiou]匹配出了aeiou這幾個字母以外的任意字符;
(8)未完待補充,還沒學習完
3.針對上述(1)中常用正則表達式進行逐個解析、學習、總結的結果
(1)正則表達式[]、{}、()的意思
[]表示所需要匹配的字符範圍,[a-zA-Z0-9],表示相應的字符要匹配英文字符和數字。
{}匹配字符的長度,比如\s{3}表示3個空格,\s{1,3}表示1-3個空格;
()提取匹配的字符串,(\s*)表示連續空格的字符串。
(2)元字符
\n 換行符
\s 任意的空白格,包括空格、製表符、換行符、中文全角空格等;
* 表示當前匹配重複任意次(包括0次)
\r 回車
+ 表示當前匹配1次或者更多次
\w 匹配字母、數字、下劃線、漢字
\b 以字母開頭或者結尾的內容
^ 字符串開始
$ 字符串結束
參考引用:
http://tool.oschina.net/regex/#
http://deerchao.net/tutorials/regex/regex.htm
上述中郵箱地址還沒有完全看懂,需要繼續看。