版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
6.1正則表達(dá)式簡介
6.1.1 正則表達(dá)式的概念簡單地說,正則表達(dá)式是一種可以用于模式匹配和替換的強有力的工具,主要用于字符串的模式分割、匹配、查找及替換操作。可以在幾乎所有的基于UNIX系統(tǒng)的工具中找到正則表達(dá)式的身影,例如,vi編輯器、Perl或PHP腳本語言,以及awk或sedshell程序等。此外,像JavaScript這種客戶端的腳本語言也提供了對正則表達(dá)式的支持。由此可見,正則表達(dá)式已經(jīng)超出了某種語言或某個系統(tǒng)的局限,成為人們廣為接受的概念和功能。正則表達(dá)式可以讓用戶通過使用一系列的特殊字符構(gòu)建匹配模式,然后把匹配模式與數(shù)據(jù)文件、程序輸入及Web頁面的表單輸入等目標(biāo)對象進(jìn)行比較,根據(jù)比較對象中是否包含匹配模式,執(zhí)行相應(yīng)的程序。下一頁返回6.1正則表達(dá)式簡介
舉例來說,正則表達(dá)式的一個最為普遍的應(yīng)用就是用于驗證用戶在線輸入的郵件地址的格式是否正確。如果通過正則表達(dá)式證明用戶郵件地址的格式正確,用戶所填寫的表單信息將會被正常處理;反之,如果用戶輸入的郵件地址與正則表達(dá)式的模式不匹配,將會彈出提示信息,要求用戶重新輸入正確的郵件地址。由此可見,正則表達(dá)式在Web應(yīng)用的邏輯判斷中具有舉足輕重的作用。【例6-1】使用正則表達(dá)式驗證郵箱地址是否正確,如果正確,則輸出true;否則輸出false。zz.php代碼如下:上一頁下一頁返回6.1正則表達(dá)式簡介
程序運行結(jié)果如圖6-1所示??梢姡绻胧褂谜齽t表達(dá)式,就必須將其放置到某種語言中,通過語言中的方法調(diào)用正則表達(dá)式對提交的信息進(jìn)行驗證。在PHP中有兩套函數(shù)庫支持正則表達(dá)式的處理操作:一套是由PCRE(PerlCompatibleRegularExpression,Perl兼容正則表達(dá)式)庫提供的,使用“preg_”為前綴命名的函數(shù),如例6-1中使用的preg_match函數(shù);另一套是由POSIX(PortableOperatingSystemInterfaceofUNIX)擴展提供的,使用以“ereg_”為前綴命名的函數(shù)(POSIX的正則函數(shù)庫,自PHP5.3以后就不再推薦使用,從PHP6以后,就被移除)。上一頁下一頁返回6.1正則表達(dá)式簡介
6.1.2 正則表達(dá)式的基本語法在對正則表達(dá)式的功能和作用有了初步的了解之后,就來具體看一下正則表達(dá)式的語法格式。正則表達(dá)式的形式一般如下:其中位于“/”定界符之間的部分就是將要在目標(biāo)對象中進(jìn)行匹配的模式。用戶只要把希望查找匹配對象的模式內(nèi)容放入“/”定界符之間即可。6.1.3 正則表達(dá)式的特殊字符為了能夠使用戶更加靈活地定制模式內(nèi)容,正則表達(dá)式提供了專門的“元字符”。所謂元字符,就是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對象中的出現(xiàn)模式。較為常用的元字符的相關(guān)說明和分類見表6-1。上一頁下一頁返回6.1正則表達(dá)式簡介
模式中方括號內(nèi)的部分稱為“字符類”。在一個字符類中僅有以下可用元字符,見表表6-2。6.1.4 常用的正則表達(dá)式
常用的正則表達(dá)式見表6-3。如果需要更多的正則表達(dá)式,請參看正則表達(dá)式手冊。上一頁返回6.2 模式匹配函數(shù)PHP中提供了兩套支持正則表達(dá)式的函數(shù)庫,但是由于PCRE函數(shù)庫在執(zhí)行效率上要略優(yōu)于POSIX函數(shù)庫,所有這里只講解PCRE函數(shù)庫中的函數(shù),見表6-4。6.2.1 匹配字符串在PCRE函數(shù)庫中,通過preg_match()函數(shù)、preg_match_all()函數(shù)和preg_grep()函數(shù)完成復(fù)雜的字符串匹配與查找操作。1.preg_match()函數(shù)preg_match()函數(shù)根據(jù)正則表達(dá)式的模式對指定的字符串進(jìn)行搜索和匹配。其語法如下:具體參數(shù)見表6-5。下一頁返回6.2 模式匹配函數(shù)2.preg_match_all()函數(shù)preg_match_all()函數(shù)與preg_match()函數(shù)類似,都是根據(jù)正則表達(dá)式的模式對指定的字符串進(jìn)行搜索和匹配。區(qū)別是preg_match()函數(shù)在第一次匹配成功后就停止查找,而preg_match_all()函數(shù)會一直匹配到最后才會停止,獲取到所有相匹配的結(jié)果。其語法如下:具體參數(shù)見表6-6。上一頁下一頁返回6.2 模式匹配函數(shù)3.preg_grep()函數(shù)preg_grep()函數(shù)返回匹配模式的數(shù)組條目。其語法格式如下:返回給定數(shù)組input中與模式pattern匹配的元素組成的數(shù)組。具體參數(shù)見表6-7。6.2.2 替換字符串在PCRE函數(shù)庫中,通過preg_replace()函數(shù)和preg_replace_callback()函數(shù)完成復(fù)雜的字符串替換操作。同樣,對于簡單的字符串替換操作,可以使用字符串函數(shù)庫中的str_replace函數(shù)來完成。上一頁下一頁返回6.2 模式匹配函數(shù)1.preg_replace()函數(shù)preg_replace()函數(shù)根據(jù)正則表達(dá)式的模式完成字符串的搜索和替換操作。其語法如下:搜索subject中匹配pattern的部分,以replacement進(jìn)行替換。具體參數(shù)見表6-8。2.preg_replace_callback()函數(shù)preg_replace_callback()函數(shù)執(zhí)行一個正則表達(dá)式搜索并且使用一個回調(diào)進(jìn)行替換。這個函數(shù)的行為除了可以指定一個callback替代replacement進(jìn)行替換字符串的計算,其他方面等同于preg_replace()。其語法規(guī)則如下:上一頁下一頁返回6.2 模式匹配函數(shù)具體參數(shù)見表6-9。6.2.3 用正則表達(dá)式分隔字符串在PCRE函數(shù)庫中,通過preg_split()函數(shù)完成復(fù)雜的字符串分割操作。但相對簡單的字符串分割操作,則可以使用字符串函數(shù)庫中的explode函數(shù)來完成。preg_split()函數(shù)根據(jù)正則表達(dá)式定義的模式完成對指定字符串的分割操作。其語法規(guī)則如下:返回一個使用pattern邊界分隔subject后得到的子串組成的數(shù)組,或者在失敗時返回FALSE。具體參數(shù)見表6-10。上一頁返回6.3 綜合案例互聯(lián)網(wǎng)發(fā)展到今天,有很多網(wǎng)站或者Web應(yīng)用都提供了相應(yīng)的會員注冊功能,而使用正則表達(dá)式判斷表單提交的身份注冊信息是否符合輸入條件也就成為其中一項重要的內(nèi)容?!纠?-2】設(shè)計如圖6-2所示的表單界面效果。關(guān)于表單設(shè)計的相關(guān)內(nèi)容,請參看第9章的知識點進(jìn)行操作,也可以通過其他資料進(jìn)行自我學(xué)習(xí),表單的整體代碼如下:下一頁返回6.3 綜合案例上一頁下一頁返回6.3 綜合案例通過正則表達(dá)式判斷表單提交信息的頁面6-2.php中的代碼書寫如下:上一頁下一頁返回6.3 綜合案例上一頁下一頁返回6.3 綜合案例上一頁下一頁返回6.3 綜合案例上一頁下一頁返回6.3 綜合案例上一頁下一頁返回6.3 綜合案例讀者可以根據(jù)6-2.php中的注釋說明格式輸入內(nèi)容,以驗證執(zhí)行效果。上一頁下一頁返回圖6-1程序運行結(jié)果返回表6-1常用的元字符相關(guān)說明和分類返回表6-2常用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 師范類??凭蜆I(yè)前景
- 冷鏈車輛年度維護(hù)監(jiān)管規(guī)程
- 質(zhì)監(jiān)站安全生產(chǎn)培訓(xùn)課件
- 新生兒換血術(shù)后的觀察與護(hù)理
- 肥厚性心肌病的長期隨訪
- 家人之愛溫暖生命的禮物
- 2025年3.5學(xué)雷鋒紀(jì)念日小學(xué)生主題班會課件
- 市政工程電子檔案管理方案
- 建筑消防通道設(shè)計與布局
- 照明建筑一體化設(shè)計方案
- KubeBlocks把所有數(shù)據(jù)庫運行到K8s上
- 廣東省江門市蓬江區(qū)2025年七年級上學(xué)期語文期末考試試卷及答案
- 蘇州市施工圖無障礙設(shè)計專篇參考樣式(試行)2025
- 等腰三角形重難點題型歸納(七大類型)原卷版-2024-2025學(xué)年北師大版八年級數(shù)學(xué)下冊重難點題型突破
- 臨時用電變壓器安裝方案
- 社會工作項目調(diào)研方案含問卷及訪談提綱
- 2025年包頭職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完整版
- 全國高校輔導(dǎo)員素質(zhì)能力大賽試題(談心談話、案例分析)
- 《XXXX煤礦隱蔽致災(zāi)地質(zhì)因素普查報告》審查意見
- 鋼結(jié)構(gòu)制作焊接操作手冊
- 【MOOC】生物材料伴我行-湖南大學(xué) 中國大學(xué)慕課MOOC答案
評論
0/150
提交評論