一、什麼是正則表達式。 解析:在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。 正則表達式就是用於描述這些規則的工具。 用俗話說,正則表達式就是記錄文本規則的代碼。 二、入門。 我用一個故事與大家說明。 1)老師組織一個活動在電腦文本html.txt中查找帶"hi"開頭的 ...
一、什麼是正則表達式。
解析:在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。
正則表達式就是用於描述這些規則的工具。
用俗話說,正則表達式就是記錄文本規則的代碼。
二、入門。
我用一個故事與大家說明。
1)老師組織一個活動在電腦文本html.txt中查找帶"hi"開頭的字母的單詞。
解析: 這幾乎是最簡單的正則表達式了,它可以精確匹配這樣的字元串:由兩個字元組成,前一個字元是h,後一個是i。通常,處理正則表達式的工具會提供一個忽略大小寫的選項,如果選中了這個 選項,它可以匹配hi,HI,Hi,hI這四種情況中的任意一種。
不幸的是,很多單詞里包含hi這兩個連續的字元,比如him,history,high等等。用hi來查找的話,這裡邊的hi也會被找出來。如果要精確地查找hi這個單詞的話,我們應該使用\bhi\b。
\b是正則表達式規定的一個特殊代碼(好吧,某些人叫它元字元,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來 分隔的,但是\b並不匹配這些單詞分隔字元中的任何一個,它只匹配一個位置。
2)如果同時使用其它元字元,我們就能構造出功能更強大的正則表達式。比如下麵這個例子:
解析:0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字元串:以0開頭,然後是兩個數字,然後是一個連字型大小“-”,最後是8個數字(也就是中國的電話號碼。當然,這個例子只能匹配區號為3位的情形)。
這裡的\d是個新的元字元,匹配一位數字(0,或1,或2,或……)。-不是元字元,只匹配它本身——連字元(或者減號,或者中橫線,或者隨你怎麼稱呼它)。
為了避免那麼多煩人的重覆,我們也可以這樣寫這個表達式:0\d{2}-\d{8}。 這裡\d後面的{2}({8})的意思是前面\d必須連續重覆匹配2次(8次)。
三、常用的元字元
代碼 | 說明 |
---|---|
/.../ | 代表了一個模式的開始和結束 |
. | 匹配除換行符以外的任意字元 |
\w | 匹配字母或數字或下劃線或漢字 |
\s | 匹配任意的空白符 |
\d | 匹配數字 |
\b | 匹配單詞的開始或結束 |
^ | 匹配字元串的開始 |
$ | 匹配字元串的結束 |
eg
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="js/jquery-1.8.3.js"></script> <script type="text/javascript"> function checkCode() { var code = $("#code").val(); var $codeId = $("#code_prompt"); var regCode = /^\d{6}$/; if (regCode.test(code) == false) { $codeId.html("郵政編碼不正確,請正確輸入"); return false; } $codeId.html(""); return true; } function checkMobile() { var mobile = $("#moblie").val(); var $mobileId = $("#mobile_prompt"); //var regMobile = /^1\d{10}$/; var regMobile = /^\d(\d[a-zA-Z]{2,3}){3,10}$/; if (regMobile.test(mobile) == false) { $mobileId.html("手機號碼不正確,請重新輸入"); return false; } $mobileId.html(""); return true; } </script> </head> <body> 郵政編碼:<input type="text" id="code" /> <div id="code_prompt"> <!-- 輸出錯誤信息--> 手機號碼:<input type="text" onblur="checkMobile()" id="moblie" /> </div> <div id="mobile_prompt"></div> </body> </html>
在這個例子中我就在手機號和郵編號碼的時候用正則限制了它的輸出規範。比如手機號的正則“ /^\d(\d[a-zA-Z]{2,3}){3,10}$/;”解釋:(\d[a-zA-Z]{2,3})是以一個數字開頭後面至少跟兩個字母不得超過三個字母;{3,10}加上\d這個匹配次數不能超過3---10次。
大家可以關註:https://msdn.microsoft.com/zh-cn/library/dt8b909y(v=vs.90).aspx進行深入瞭解