国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

正則表達式在網(wǎng)絡(luò)編程中的運用

2019-11-18 12:13:10
字體:
供稿:網(wǎng)友

  [前言:]在我們編寫WEB程序時,經(jīng)常會判定一個字符串的有效性,如;一個串是否是數(shù)字、是否是有效的Email地址等等。假如不使用
  
  正則表達式,那么判定的程序會很長,并且輕易出錯,假如使用正則表達式,這些判定就是一件很輕松的工作了。本文全面介紹正則表達式的
  
  慨念、格式。并以在php、asp中的應(yīng)用實例增加讀者的感性熟悉。正則表達式的應(yīng)用很廣,需要大家在學(xué)習(xí)和實踐中不斷的總結(jié)。
  
  正則表達式簡介
  
  簡單的說,正則表達式是一種可以用于模式匹配和替換的強有力的工具。在網(wǎng)絡(luò)編程中應(yīng)用廣泛,如PHP腳本語言或是javascript、VBScript這樣的客戶端腳本語言都提供了對正則表達式的支持。由此可見,正則表達式已經(jīng)超出了某種語言或某個系統(tǒng)的局限,成為人們廣為接受的概念和功能。
  
  正則表達式可以讓用戶通過使用一系列的非凡字符構(gòu)建匹配模式,然后把匹配模式與數(shù)據(jù)文件、程序輸入以及WEB頁面的表單輸入等目標(biāo)對象進行比較,根據(jù)比較對象中是否包含匹配模式,執(zhí)行相應(yīng)的程序。
  
  舉例來說,正則表達式的一個最為普遍的應(yīng)用就是用于驗證用戶在線輸入的郵件地址的格式是否正確,假如通過正則表達式驗證用戶郵件地址的格式正確,用戶所填寫的表單信息將會被正常處理;反之,假如用戶輸入的郵件地址與正則表達的模式不匹配,將會彈出提示信息,要求用戶重新輸入正確的郵件地址。由此可見正則表達式在WEB應(yīng)用的邏輯判定中具有舉足輕重的作用。在后面我們會舉例具體介紹。正則表達式形式一般如:/love/,其中位于/"http://"定界符之間的部分就是將要在目標(biāo)對象中進行匹配的模式。用戶只要把希望查找匹配對象的模式內(nèi)容放入/"http://"定界符之間即可。為了能夠使用戶更加靈活的定制模式內(nèi)容,正則表達式提供了專門的/"元字符/".所謂元字符就是指那些在正則表達式中具有非凡意義的專用字符,可以用來規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對象中的出現(xiàn)模式。較為常用的元字符包括: /"+,/"*,?以及{}/",或者/"http://s,//S,//d,//w和//W/"等等。為了能夠方便用戶更加靈活的設(shè)定匹配模式,正則表達式答應(yīng)使用者在匹配模式中利用[]界定匹配于某一個范圍的字符而不局限于具體的字符。
  
  除了我們以上的元字符之外,正則表達式中還具有另外一種較為獨特的專用字符,即定位符。定位符用于規(guī)定匹配模式在目標(biāo)對象中的出現(xiàn)位置。較為常用的定位符包括: /"^/", /"$/", /"http://b/" 以及 /"http://B/"。
  
  假如我們希望在正則表達式中實現(xiàn)類似編程邏輯中的/"或/"運算,在多個不同的模式中任選一個進行匹配的話,可以使用管道符 /"/"。例如:
  
  正則表達式中還有一個較為常用的運算符,即否定符 /"[ ^ ]/"。與我們前文所提到的定位符 /"^/" 不同,否定符 /"[ ^ ]/"規(guī)定目標(biāo)對象中不能存在模式中所規(guī)定的字符串。一般來說,當(dāng)/"^/"出現(xiàn)在 /"[]/"內(nèi)時就被視做否定運算符;而當(dāng)/"^/"位于/"[]/"之外,或沒有/"[]/"時,則應(yīng)當(dāng)被視做定位符。
  
  最后,當(dāng)用戶需要在正則表達式的模式中加入元字符,并查找其匹配對象時,可以使用轉(zhuǎn)義符/"http:///"。例如:/Th//*/,該正則表達式將會與目
  
  標(biāo)對象中的/"Th*/"而非/"The/"等相匹配。
  
  正則表達式的語法規(guī)則和標(biāo)記
  
  現(xiàn)在我們正式進入則表達式的學(xué)習(xí),我會根據(jù)實例結(jié)合講解正則表達式的用法,看完后你就會覺得寫UBB代碼如此簡單了,只要你一步一步的跟著我學(xué) 看完本文章后你就成為UBB高手了。激動人心的就是你能寫出自已的UBB標(biāo)簽來了,再也不用到別人那里去拷貝現(xiàn)成的代碼和  
  字符描述:
  
  ^符號匹配字符串的開頭。例如:
  
  ^abc 與/"abc xyz/"匹配,而不與/"xyz abc/"匹配
  
  $符號匹配字符串的結(jié)尾。例如:
  
  abc$ 與/"xyz abc/"匹配,而不與/"abc xyz/"匹配。
  
  注重:假如同時使用^符號和$符號,將進行精確匹配。例如:
  
  ^abc$ 只與/"abc/"匹配
  
  *符號匹配0個或多個前面的字符。例如:
  
  ab* 可以匹配/"ab/"、/"abb/"、/"abbb/"等
  
  +符號匹配至少一個前面的字符。例如:
  
  ab+ 可以匹配/"abb/"、/"abbb/"等,但不匹配/"ab/"。
  
  ?符號匹配0個或1個前面的字符。例如:
  
  ab?c? 可以且只能匹配/"abc/"、/"abbc/"、/"abcc/"和/"abbcc/"
  
  .符號匹配除換行符以外的任何字符。例如:
  
  (.)+ 匹配除換行符以外的所有字符串
  
  xy匹配/"x/"或/"y/"。例如:
  
  abcxyz 可匹配 /"abc/"或 /"xyz/",而/"ab(cx)yz/"匹配 /"abcyz/"和/"abxyz/"
  
  {n}匹配恰好n次(n為非負整數(shù))前面的字符。例如:
  
  a{2} 可以匹配/"aa/",但不匹配/"a/"
  
  {n,}匹配至少n次(n為非負整數(shù))前面的字符。例如:
  
  a{3,} 匹配/"aaa/"、/"aaaa/"等,但不匹配/"a/"和/"aa/"。
  
  注重:a{1,}等價于a+
  
  a{0,}等價于a*
  
  {m,n}匹配至少m個,至多n個前面的字符。例如:
  
  a{1,3} 只匹配/"a/"、/"aa/"和/"aaa/"。
  
  注重:a{0,1}等價于a?
  
  [xyz]表示一個字符集,匹配括號中字符的其中之一。例如:
  
  [abc] 匹配/"a/"、/"b/"和/"c/"
  
  [^xyz]表示一個否定的字符集。匹配不在此括號中的任何字符。例如:
  
  [^abc] 可以匹配除/"a/"、/"b/"和/"c/"之外的任何字符
  
  [a-z]表示某個范圍內(nèi)的字符,匹配指定區(qū)間內(nèi)的任何字符。例如:
  
  [a-z] 匹配從/"a/"到/"z/"之間的任何一個小寫字母字符
  
  [^m-n]表示某個范圍之外的字符,匹配不在指定范圍內(nèi)的字符。例如:
  
  [m-n] 匹配除從/"m/"到/"n/"之間的任何字符
  
  //符號是轉(zhuǎn)義操作符。例如:
  
  //n 換行符
  
  //f 
分頁
  
  //r 回車
  
  //t 制表符
  
  //v 垂直制表符
  
  //// 匹配/"http:///"
  
  /// 匹配/"http://"
  
  //s 任何白字符,包括空格、制表符、分頁符等。等價于/"[ //f//n//r//t//v]/"
  
  //S 任何非空白的字符。等價于/"^//f//n//r//t//v]/"
  
  //w 任何單詞字符,包括字母和下劃線。等價于/"[A-Za-z0-9_]/"
  
  //W 任何非單詞字符。等價于/"[^A-Za-z0-9_]/"
  
  //b匹配單詞的結(jié)尾。例如:
  
  ve//b 匹配單詞/"love/"等,但不匹配/"very/"、/"even/"等
  
  //B匹配單詞的開頭。例如:
  
  ve//B 匹配單詞/"very/"等,但不匹配/"love/"等
  
  //d匹配一個數(shù)字字符,等價于[0-9]。例如:
  
  abc//dxyz 匹配/"abc2xyz/"、/"abc4xyz/"等,但不匹配/"abcaxyz/"、/"abc-xyz/"等
  
  //D匹配一個非數(shù)字字符,等價于[^0-9]。例如:
  
  abc//Dxyz 匹配/"abcaxyz/"、/"abc-xyz/"等,但不匹配/"abc2xyz/"、/"abc4xyz/"等
  
  //NUM匹配NUM個(其中NUM為一個正整數(shù)),引用回到記住的匹配。例如:
  
  (.)//1 匹配兩個連續(xù)相同的字符。
  
  //oNUM匹配n(其中n為一個小于256的八進制換碼值)。例如:
  
  //o011 匹配制表符
  
  //xNUM匹配NUM(其中NUM為一個小于256的十六進制換碼值)。例如:
  
  //x41 匹配字符/"A/"
  
  應(yīng)用實例
  
  在對正則表達式有了較為全面的了解之后,就可以在Perl,PHP,以及ASP等程式中使用正則表達式了。
  
  下面以PHP語言為例,使用驗證用戶在線輸入的郵件地址以及網(wǎng)址的格式是否正確。PHP 提供了eregi()或ereg()資料處理函數(shù)實現(xiàn)字串比
  
  對剖析的模式匹配操作ereg()函數(shù)的使用格式如下:
  
  ereg (pattern, string)
  
  其中,pattern代表正則表達式的模式;而string則是執(zhí)行查找替換操作的目標(biāo)對象,如Email地址值。本函式以 pattern 的規(guī)則來剖析比
  
  對字串 string,找到則傳回值為 true。函式ereg()與eregi()的區(qū)別就是前者區(qū)分大小寫,后者與大小寫無關(guān)。使用PHP編寫的程序代碼如下:
  
 ?。?php
  if (ereg(/"^([a-z0-9_-])+@([a-zZ0-9_-])+(//.[a-z0-9_-])+[a-z]{2,3}$/",$email))
  { echo /"您的 E-Mail 通過初步檢查!/";}
  else
  { echo /"不是合法的E-Mail 地址,請重新輸入!/";}
  ?>
  
  這個例子是可對使用者輸入的 E-Mail 作簡單的檢查,檢查使用者的 E-Mail 字串是否有 @ 字元,在 @ 字元前有小寫英文字母、數(shù)字或下/"_/",在 @ 之后有數(shù)節(jié)字串,最后的小數(shù)點后只能有二個或三個小寫英文字母。如webmaster@mail.sever.net, hello_2001@88new.cn就可以通過檢查,而New99@253.com(出現(xiàn)大寫字母)和new99@253.comn(最后的小數(shù)點后只能超過3個英文字母)就不能通過檢查。
  
  我們通過調(diào)用自定義正規(guī)則判別函式也可以進行檢查操作,如下面的網(wǎng)址檢驗函式:
  
  function VerifyWebSiteAddr ($strWebSiteAddr){
  return (eregi (/"^([_0-9a-z-]+.)+([0-9a-z-]+.)+[a-z]{2,3}$/", $strWebSiteAddr));
  }
  
  我們知道,PHP程式的運行

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长武县| 双桥区| 惠水县| 尤溪县| 紫金县| 温宿县| 平潭县| 奉贤区| 武安市| 东阳市| 常宁市| 新宾| 廊坊市| 武陟县| 重庆市| 龙胜| 阳朔县| 玉山县| 响水县| 舟曲县| 永顺县| 康保县| 松滋市| 昌江| 阿拉尔市| 朝阳县| 横峰县| 平舆县| 文登市| 公安县| 西丰县| 阿尔山市| 沁阳市| 新巴尔虎左旗| 黔西县| 新闻| 铁力市| 儋州市| 兴安县| 荣成市| 西乌珠穆沁旗|