計算機, 程序設計
PHP(正則表達式) - 是什麼呢? 實例和檢查的正則表達式
當與任何現代的編程語言文字工作,開發人員不斷地與輸入驗證符合所需圖案的目標達到,搜索和替換測試片段和其他類型的字符信息處理操作。 開發自己的驗證算法導致時間上的損失,在其發展和現代化建設的代碼兼容性和複雜性。
互聯網和網頁設計語言的迅速發展需要的文本處理的通用性和緊湊的方式建立與該代碼所需的最低量。 它也不例外,為初學者和PHP語言的專業開發人員的青睞。 正則表達式語言文字模板,簡化處理文本的任務,並減少代碼十位和百線。 許多問題不能得到解決根本離不開它。
在PHP中的正則表達式
PHP語言有三種機制的使用正則表達式 - «額日格»,«mb_ereg»和«預浸»。 最常見的是接口«預浸»,其職能提供訪問PCRE正則表達式的支持,最初是為Perl語言,這是包含在PHP開發包的庫。 預浸尋求在給定的文本字符串匹配函數,根據正則表達式的語言有一定的模式。
語法基礎知識
作為短製品的一部分是不可能詳細描述整個正則表達式語法,這是有特殊文獻。 我們目前只有主要內容,以示對開發商的機遇和理解的代碼示例。
在PHP正則表達式被正式定義非常困難的,因此簡化說明。 正則表達式是一個文本字符串。 它由一個專門的隔離模板和指示來處理它的方式修改的。 可能列入圖案的各種選擇和循環。
例如,在表達/ \ D {3} - \ D {2} - \ D {2} / M分頻器是“/”,然後選擇模板,符號“M”是改性劑。
正則表達式的一切權力使用的元字符編碼。 主要語言的元字符是反斜杠 - “\”。 它改變在相反以下的字符的類型(即,E.轉換為普通字符通配符,並且反之亦然)。 另一個重要的元字符是直線«|»,指定替代模板。 的元字符更多的例子:
^ | 起始對象或字符串 |
( | 啟動子模式 |
) | 最終子模式 |
{ | 開始量詞 |
} | 結束量詞 |
\ D | 十進制數0至9的 |
\ D | 這是不是一個數字的任何字符 |
\ S | 空符號,空格,製表符, |
\ W | 符號字典 |
PHP,處理的正則表達式,空間視為一個獨立的有效字符,所以XYZ和ABC的WHERE是不同的表達。
子模式
在括號PHP正子模式,它們有時被稱為“子表達式”。 執行以下功能:
分配方案。 例如 , 熱模式(東西|鳥|)改為“熱”,“火鳥”和“熱”相吻合。 而如果沒有括號也只會是一個空字符串,“鳥”和“熱”。
“壯觀”的子模式。 這意味著,如果該模式匹配的子字符串,然後返回所有匹配。 為了清楚起見,我們舉一個例子。 鑑於以下正則表達式: 冠軍將得到((金|鍍金)(獎章|杯)) -和匹配字符串,“優勝者得到一枚金牌。” 除了最初的詞組,搜索結果會發出:“金獎”,“ 獎牌”,“黃金”。
運營商重複(kvadrifikatory)
在編譯正則表達式通常需要分析的數字和符號的重複。 這不是一個問題,如果沒有大量的重複。 但要做到什麼時候,我們不知道他們的確切數字? 在這種情況下,有必要使用特殊的元字符。
對於使用kvadrifikatory重複的描述 - 元字符來指定號碼。 Kvadrifikatory有兩種類型:
- 常見的括號內;
- 降低。
整體量詞通過的允許重複元件的在括號兩個數字,例如x {2,5-}形式的最小和最大數目觸摸。 如果沒有已知的最大重複次數,未指定的第二個參數:X {2}。
縮寫量詞是為了避免不必要的重載語法為最常見的重複碼元。 通常有三種切口:
1. * - 零個或多個重複,其等同於{0,}。
2. + - 一個或多個重複的,即,{1} ...
3.? - 零或僅一個重複 - {0,1}。
例如正則表達式
對於那些誰學習正則表達式,例子 - 最好的教科書。 我們舉幾個,顯示用最少的努力的機會。 所有的代碼是用PHP 4.x及以上版本完全兼容。 要充分認識我們推薦這本書用j ..弗里德爾,“正則表達式”,這充分考慮語法的語言特性的語法和用法,並有正則表達式不僅PHP,而且對於一個Python,Perl中,MySQL和Java的,Ruby和C#的例子。
驗證E-mail地址
任務。 有在其上請求的地址的電子郵件訪問者的互聯網頁面。 發送消息之前,正則表達式必須檢查的地址的正確性。 檢查並不能保證指定的郵箱確實存在和接收消息。 但剔除可明顯錯誤的地址。
決策。 與任何編程語言,PHP中的正則表達式電子郵件地址驗證可以以不同的方式來實現,在這篇文章中的例子是不是最終和唯一的選擇。 因此,在每種情況下,我們應提供需要編程和具體的實現完全取決於開發時要考慮到需求的列表。
因此,測試有效的電子郵件表達,應檢查以下條件:
- 在起始存在排隊@符號,並有沒有間隙。
- @符號的地址域部分,僅包含域名的有效字符。 這同樣適用於用戶的姓名。
- 當檢查用戶名是必要確定的特殊字符存在下,例如一個撇號或垂直線。 這些符號具有潛在的危險,並可以包含在這樣的種該SQL注入攻擊。 避免地址。
- 用戶名只允許有一個點,這可能不是字符串中的第一個或最後一個字符。
- 域名必須包含至少兩個不超過6個字符。
例如,考慮到所有的這些條件可以在以下圖中可以看出。
一個URL驗證
任務。 檢查指定的文本字符串是否是一個有效的 地址,URL。 再次,我們注意到,正則表達式URL檢查可以通過多種方式來實現。
決策。 我們的最終版本如下:
/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /?$ /
現在使用繪製更詳細地分析其成分。
權利要求1 | 之前的URL不應該有任何字符 |
要求2 | 檢查強制前綴的存在«HTTP» |
項目3 | 不應該有任何符號 |
4. | 如果有«小號»,URL指向一個安全的連接«HTTPS» |
5. | 所需部分中的“//” |
6. | 無字 |
第7-9 | 驗證所述 第一電平域 和點的存在 |
p.10-13 | 驗證寫第二級和點的域 |
p.14-17 | 文件結構URL - 一組數字,字母,下劃線,破折號,點,並在最後一個斜杠 |
檢查信用卡號碼
任務。 您需要實現最常用的支付系統中輸入信用卡號碼的驗證。 一個只為卡變種 維薩和萬事達。
決策。 在創建表達式,你需要考慮在輸入房間的差距可能存在。 地圖上的數字被分成幾個組更容易閱讀和聽寫。 因此,它是自然的,一個人可以嘗試以這種方式輸入數字(即E.使用空格)。
寫一個通用的表達,考慮到可能的空格或連字符,是複雜得多,簡單地丟棄除了數字的所有字符。 因此,我們建議使用通配符表達/ D,這消除除了數字的所有字符。
現在,你可以直接到支票號碼。 所有公司,信用卡發卡機構採用獨特的數字格式。 在這個例子中使用它,並在客戶端不需要輸入公司的名稱 - 它是由數決定。 Visa卡總是與數字4開始並具有13或16位數字的長度。 萬事達開始於51-55與長數16。結果的範圍內,我們得到如下表達式:
處理訂單之前,可以進一步進行測試的數量,這是在Luhn算法計算出的最後一位數字。
驗證電話號碼
任務。 檢查輸入的電話號碼的正確性。
決策。 在固定和移動電話號碼位數變化並還相當依賴於國家,所以普遍採用查,電話號碼無法正確的正則表達式。 但是國際數字有檢查模式是嚴格的格式和完善。 更是讓越來越多的國內電話運營商正在努力滿足相同的標準。 房間結構如下:
+ CCC.NNNNNNNNNNxEEEE,其中:
- C - 是一個由1-3數字的國家代碼。
- N - 數高達14位數字。
- 電子 - 可選的擴展。
Plus是一個不可缺少的元素,而符號X是需要擴展僅當存在。
因此,我們有以下表現:
^ \ + [0-9] {1,3 } \ [0-9] {4,14}。(?:X +)?$
在該範圍的數
任務。 有必要確保在一定範圍的巧合整數。 此外,有必要找到一個正則表達式只能從範圍內的號碼。
決策。 這裡有幾個表情的一些最常見的情況:
確定小時從1至24 | ^(1 [0-2] | [1-9])$ |
那天在1-31個月 | ^(3 [01] | [12] [0-9] | [1-9])$ |
幾秒鐘或幾分鐘0-59 | ^ [1-5] [0-9] $ |
從1到100之間的數字 | *(100 |?[1-9] [0-9])$ |
今年1到366的日 | ^(36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |?[1-9] [0-9])$ |
搜尋IP位址
任務。 有必要確定給定的字符串是否是與000.000.000.000-255.255.255.255範圍內有效的IP地址在IPv4格式。
決策。 正如在PHP語言的任何問題,正則表達式中有很多varintov。 例如,這樣的:
表達式的在線檢查
檢查正則表達式正確初學者可由於語法的複雜性,從“正規”的編程語言不同是困難的。 為了解決這個問題,網上有很多測試表達式可以很容易地檢查您在真實文本創建的模板的正確性。 程序員進入表達和驗證數據,並立即顯示處理的結果。 通常有呈現參考部分,其中詳細的正則表達式,實施例和實現差異為最擴展語言。
但要完全信任的在線服務,不推薦誰使用PHP的所有開發成果。 正則表達式的編寫和驗證的人,提高資格,並保證沒有錯誤的情況。
Similar articles
Trending Now