正則表達式學習方法摸索

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

上述中郵箱地址還沒有完全看懂,需要繼續看。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章