工具
Regexpal是一個線上Javascript正規表示式處理器,位址是:http://www.regexpal.com
學習正規重要的是實踐操作,不妨舉個栗子:
匹配號碼:707-827-7019
字元組符合
[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] [0-9]
d匹配任阿拉伯數字
D匹配任何非阿拉伯數字
.符合任意字元
dddDdddDddddD
ddd.ddd.dddd.
捕獲分組與後向應用
用圓括號()建立分組,用1來對捕獲分組內容進行向後引用
(d)d1 則符合707
完整匹配號碼:
^((d{3})|^d{3}[.-]?)?d{3}[.-]?d{4}$
^ 表示一行起始位置
( 表示捕獲分組的起始符
( 表示左括號
d{3} 表示配對三位數字
) 表示右括號
| 表示選擇
[.-]? 符合一個可選的點號或連字號
) 捕捉分組的結束符
? 表示分組可選
$ 表示行結束為止
邊界
匹配行或字串起始位置使用脫字符 ^
匹配行或字串末尾位置使用美元符 $
量詞
量詞預設是貪心的
貪心的量詞會先匹配整個字串。嘗試配對時,他會選定盡可能多的內容,也就是整個輸入。量詞首先匹配整個字符,如果失敗則回退一個字符再次嘗試。這個過程就叫做 回溯。
懶惰的量詞是從目標的起始位置開始尋找配對。每次檢查字串的一個字符,尋找他要匹配的內容。最後,他會嘗試匹配整個字串。
佔有量詞會涵蓋整個目標,然後嘗試尋找匹配內容,但他只嘗試一次,不會回溯。
如使用 .* 匹配任何字元零次或多次
貪心量詞
使用花括號{}可限制某一模式在某一範圍內匹配的次數,另外,未經修飾的量詞就是貪心量詞
7{1,}與7+
7{0,}與7*
7?與7{0,1}
本質上則是一樣
7{m,n} 則會比對m到n次
懶量詞
末尾加上?則使量詞變懶
7?? 首先7?匹配零個或一個7,懶惰後不會匹配任何內容
7*? 匹配零個7
7+? 匹配一個7
7{m,n}? 匹配m個7
關於正規符合html,xml標籤,下次再寫