萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 正則表達式在網絡編程中的運用

正則表達式在網絡編程中的運用

導讀:
正則表達式在網絡編程中的運用

[前言:]在我們編寫WEB程序時,經常會判定一個字符串的有效性,如;一個串是否是數字、是否是有效的Email地址等等。假如不使用正則表達式,那麼判定的程序會很長,並且輕易出錯,假如使用正則表達式,這些判定就是一件很輕松的工作了。本文全面介紹正則表達式的慨念、格式。並以在PHP、ASP中的應用實例增加讀者的感性熟悉。正則表達式的應用很廣,需要大家在學習和實踐中不斷的總結。

正則表達式簡介
簡單的說,正則表達式是一種可以用於模式匹配和替換的強有力的工具。在網絡編程中應用廣泛,如PHP腳本語言或是JavaScript、VBScript這樣的客戶端腳本語言都提供了對正則表達式的支持。由此可見,正則表達式已經超出了某種語言或某個系統的局限,成為人們廣為接受的概念和功能。

正則表達式可以讓用戶通過使用一系列的非凡字符構建匹配模式,然後把匹配模式與數據文件、程序輸入以及WEB頁面的表單輸入等目標對象進行比較,根據比較對象中是否包含匹配模式,執行相應的程序。

舉例來說,正則表達式的一個最為普遍的應用就是用於驗證用戶在線輸入的郵件地址的格式是否正確,假如通過正則表達式驗證用戶郵件地址的格式正確,用戶所填寫的表單信息將會被正常處理;反之,假如用戶輸入的郵件地址與正則表達的模式不匹配,將會彈出提示信息,要求用戶重新輸入正確的郵件地址。由此可見正則表達式在WEB應用的邏輯判定中具有舉足輕重的作用。在後面我們會舉例具體介紹。

正則表達式形式一般如:/love/,其中位於"/"定界符之間的部分就是將要在目標對象中進行匹配的模式。用戶只要把希望查找匹配對象的模式內容放入"/"定界符之間即可。為了能夠使用戶更加靈活的定制模式內容,正則表達式提供了專門的"元字符"。所謂元字符就是指那些在正則表達式中具有非凡意義的專用字符,可以用來規定其前導字符(即位於元字符前面的字符)在目標對象中的出現模式。較為常用的元字符包括: " ,"*,?以及{}",或者"s,S,d,w和W"等等。為了能夠方便用戶更加靈活的設定匹配模式,正則表達式答應使用者在匹配模式中利用[]界定匹配於某一個范圍的字符而不局限於具體的字符。

除了我們以上的元字符之外,正則表達式中還具有另外一種較為獨特的專用字符,即定位符。定位符用於規定匹配模式在目標對象中的出現位置。較為常用的定位符包括: "^", "$", "b" 以及 "B"。

假如我們希望在正則表達式中實現類似編程邏輯中的"或"運算,在多個不同的模式中任選一個進行匹配的話,可以使用管道符 "|"。例如: 正則表達式中還有一個較為常用的運算符,即否定符 "[^]"。與我們前文所提到的定位符 "^" 不同,否定符 "[^]"規定目標對象中不能存在模式中所規定的字符串。一般來說,當"^"出現在 "[]"內時就被視做否定運算符;而當"^"位於"[]"之外,或沒有"[]"時,則應當被視做定位符。

最後,當用戶需要在正則表達式的模式中加入元字符,並查找其匹配對象時,可以使用轉義符""。例如:/Th*/,該正則表達式將會與目標對象中的"Th*"而非"The"等相匹配。

正則表達式的語法規則和標記
現在我們正式進入則表達式的學習,我會根據實例結合講解正則表達式的用法,看完後你就會覺得寫UBB代碼如此簡單了,只要你一步一步的跟著我學 看完本文章後你就成為UBB高手了。激動人心的就是你能寫出自已的UBB標簽來了,再也不用到別人那裡去拷貝現成的代碼和模板了。 還好VBScritp5.0給我們提供了"正則表達式"對象,只要你的服務器安裝了IE5.x,就可以運行了.

字符描述:

^符號匹配字符串的開頭。例如:
^abc 與"abc xyz"匹配,而不與"xyz abc"匹配

$符號匹配字符串的結尾。例如:
abc$ 與"xyz abc"匹配,而不與"abc xyz"匹配。

注重:假如同時使用^符號和$符號,將進行精確匹配。例如:
^abc$ 只與"abc"匹配 

*符號匹配0個或多個前面的字符。例如:
ab* 可以匹配"ab"、"abb"、"abbb"等

符號匹配至少一個前面的字符。例如:
ab  可以匹配"abb"、"abbb"等,但不匹配"ab"。

?符號匹配0個或1個前面的字符。例如:
ab?c? 可以且只能匹配"abc"、"abbc"、"abcc"和"abbcc"

.符號匹配除換行符以外的任何字符。例如:
(.)  匹配除換行符以外的所有字符串

x|y匹配"x"或"y"。例如:
abc|xyz 可匹配 "abc"或 "xyz",而"ab(c|x)yz"匹配 "abcyz"和"abxyz"

{n}匹配恰好n次(n為非負整數)前面的字符。例如:
a{2} 可以匹配"aa",但不匹配"a"

{n,}匹配至少n次(n為非負整數)前面的字符。例如:
a{3,} 匹配"aaa"、"aaaa"等,但不匹配"a"和"aa"。

copyright © 萬盛學電腦網 all rights reserved