自由學習正則表達式

               嘿嘿,今天家又停電啦,就來寫總結晚啦,只得等到如今啦,其實咱們今天學習的是什麼我已經不記得啦,因爲這周給咱們講.Net的老師飛去給其餘班級上課,因而咱們就聽課啦,而公司爲了搪塞咱們,給咱們安排啦一個Oracle數據庫老師,本覺得能夠學到這個是咱們的榮幸啦,但是意想不到的是坐在第一排的咱們都難以聽到老師是什麼,這個是給老師提建議啦,但是改變不了啊,這樣的一天,課堂氣氛甚是安靜啊,咱們100度的學習熱度,最後一點點的降低到了零下,其實今天僅僅帶咱們安裝Oracle數據庫,可想而知,咱們下載完文件,也沒有安裝成功,這樣的一天就是這樣結束的,咱們學生痛苦啊,咱們在想一想公司反映仍是本身學習吧,可是想啦一下,老師也是無辜的吧,不想打擊她啦,因而咱們選擇默默地上課吧,默默祈禱這周安靜的快點成爲記憶拉。javascript

          不論由於什麼緣由,學習的每一天是不能落下的,因而本身看啦一下正則表達式,其實則表達式是用來進行文本處理的技術,是語言無關的,在幾乎全部語言中都有實現。javascript中還會用到,一個正則表達式就是由普通字符以及特殊字符(稱爲元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式做爲一個模板,將某個字符模式與所搜索的字符串進行匹配。就像通配符「*.jpg」、「%ab%」,它是對字符串進行匹配的特殊字符串,正則表達式能作什麼那?其實正則表達式就是對字符串的處理,能夠用來對字符串的匹配、字符串的提取、字符串的替換等;咱們在項目中像作到採集器、敏感詞過濾、URLRewite、Validator也可使用正則表達式。下面就簡單的總結一下吧。java

          一.元字符正則表達式

                . :匹配除\n以外的任何單個字符。例如正則表達式「b.g」能匹配以下字符串:「big」、「bug」、「b g」,可是不匹配「buug」,「b..g」能夠匹配「buug」。 
          [ ] :匹配括號中的任何一個字符。例如正則表達式「b[aui]g」匹配bug、big和bag,可是不匹配beg、baug。能夠在括號中使用連字符「-」來指定字符的區間來簡化表示,例如正則表達式[0-9]能夠匹配任何數字字符,這樣正則表達式「a[0-9]c」等價於「a[0123456789]c」就能夠匹配「a0c」、「a1c」、「a2c」等字符串;還能夠制定多個區間,例如「[A-Za-z]」能夠匹配任何大小寫字母,「[A-Za-z0-9]」能夠匹配任何的大小寫字母或者數字。。
          | :將兩個匹配條件進行邏輯「或」運算。‘z|food’能匹配「z」或「food」。‘(z|f)ood’則匹配「zood」或「food」。 //注意^$問題。
          ( ) :將 () 之間括起來的表達式定義爲「組」(group),而且將匹配這個表達式的字符保存到一個臨時區域,這個元字符在字符串提取的時候很是有用。把一些字符表示爲一個總體。改變優先級、定義提取組兩個做用。
               
               二.元字符(限定符)
         *:匹配0至多個在它以前的子表達式,和通配符*不要緊。例如正則表達式「zo*」(等同於z(o)*)能匹配「z」、「zo」以及「zoo」;所以「.*」意味着可以匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括號改變優先級)。
         + :匹配前面的子表達式一次或屢次,和*對比(0到屢次)。例如正則表達式9+匹配九、9九、999等。「zo+」能匹配「zo」以及「zoo」,不能匹配"z"。
         ? :匹配前面的子表達式零次或一次。例如,「do(es)?」能夠匹配「do」或「does」。通常用來匹配「可選部分」。(終止貪婪模式)
        {n} :匹配肯定的 n 次。「zo{2}」→zoo。例如,「e{2}」不能匹配「bed」中的「e」,可是能匹配「seed」中的兩個「e」。 //seeeed,不能夠。
        {n,} :至少匹配n次。例如,「e{2,}」不能匹配「bed」中的「e」,但能匹配 「seeeeeeeed」中的全部「e」。
        {n,m} :最少匹配 n 次且最多匹配 m 次。「e{1,3}」將匹配「seeeeeeeed」中的前三個「e」。 {2,5}//bed,seed,seeed;beeeeed錯誤。
             ^(shift+6) :匹配一行的開始。例如正則表達式「^regex」可以匹配字符串「regex我會用」的開始,可是不能匹配「我會用regex」。^另一種意思:非!([^0-9])
        $ :匹配行結束符。例如正則表達式「浮雲$」 可以匹配字符串「一切都是浮雲」的末尾,可是不能匹配字符串「浮雲呀」    
  
        下面就簡單的總結一下目前咱們初步學習經常使用的正則表達式:
匹配中文字符的正則表達式: [\u4e00-\u9fa5]

匹配雙字節字符(包括漢字在內):[^\x00-\xff]

應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

匹配空行的正則表達式:\n[\s| ]*\r

匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正則表達式:(^\s*)|(\s*$)
匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?       
            //bool r = Regex.IsMatch("bug", "^b.g$");
            //Console.WriteLine(r);

            //練習1:判斷是不是合法的郵政編碼(6位數字)
            //bool r = Regex.IsMatch("100010", @"^\d{6}$");
            //Console.WriteLine(r);

            //判斷一個字符串是否是身份證號碼,便是否是15或18位數字。
            //string s = "123456789012345678";
            //bool r = Regex.IsMatch(s, @"^\d{15}$|^\d{17}[0-9A-Za-z]$");
            //Console.WriteLine(r);

            //判斷字符串是否爲正確的國內電話號碼,不考慮分機。
            //bool r = Regex.IsMatch("010-12345679544",@"^(\d{3,4}\-?\d{7,8}|\d{5})$");
            //Console.WriteLine(r);

            //判斷一個字符串是不是合法的Email地址。一個Email地址的特徵就是以一個字符序列開始,後邊跟着「@」符號,後邊又是一個字符序列,後邊跟着符號「.」,最後是字符序列

            //bool r = Regex.IsMatch("123@163.com", @"^\w+@\w+\.\w+(\.\w+)?$");
            //Console.WriteLine(r);
            Console.Read();

 

       好啦,就寫到這裏吧,感受還有好可能是不太清楚的啦,看起來就是一堆符號和英文字母,但是實現的功能非同小可啦,嘿嘿,這個仍是要熟練的練習啦,剛開始接觸感受真的很差玩,一點都不熟悉,仍是要作好多的練習的啦,嘿嘿,我會找些習題在作一下練習的啦,必定要熟練的使用的啦。數據庫

相關文章
相關標籤/搜索