Php基础正则表达式篇
正則表達式通常用來查找和替換字符串,最常用的為驗證用戶輸入的信息格式是否正確,比如郵箱格式、電話格式、身份證等;
什么時候使用正則表達式呢?不是所有的字符操作都用正則就好了,php在某些方面用正則反而影響效率。當我們遇到復雜文本數據的解析時候,用正則是比較好的選擇。
正則表達式在處理復雜字符操作時,可以提高工作效率,并節省一定程度代碼量。
由于復雜的正則表達式會加大代碼的復雜度,讓人難以理解,因此需要在表達式內部添加相應注釋。
1、定界符:除了字母數字和反斜杠\以外的任何字符都可以為定界符,比如|| {}//!! 但是需要注意,如果沒有特殊需要,都用正斜杠//作為正則表達式的定界符;
2、正則表達式的構成:
??? /原子和元字符/模式修正符
?? 正則表達式的原子和元字符都放在定界符之間,而模式修正符放在定界符之外。
??什么是原子:原子是正則表達式的最基本組成單位,而且必須至少要包含一個原子。只要一個正則表達式可以單獨使用的字符就是原子。
?? 原子的構成:
??? 1、所有可以在屏幕上輸出的字符(大寫和小寫字母字符,所有數字,所有標點符號以及一些符號)和看不到的(空格換行符等);
| \cx | 匹配由x指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 ‘c’ 字符。 |
| \f | 匹配一個換頁符。等價于 \x0c 和 \cL。 |
| \n | 匹配一個換行符。等價于 \x0a 和 \cJ。 |
| \r | 匹配一個回車符。等價于 \x0d 和 \cM。 |
| \s | 匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 [ \f\n\r\t\v]。 |
| \S | 匹配任何非空白字符。等價于 [^ \f\n\r\t\v]。 |
| \t | 匹配一個制表符。等價于 \x09 和 \cI。 |
| \v | 匹配一個垂直制表符。等價于 \x0b 和 \cK。 |
??????? \d包含所有數字[0-9]
????????\D?除所有數字外[^0-9]
????????\w?包含所有英文字符[a-zA-Z_0-9]
??????? \W?除所有英文字符外[^a-zA-Z_0-9]
???3、自定義原子,使用[]括起來,比如[a-z][a-zA-Z]等;
??元字符:
| $ | 匹配輸入字符串的結尾位置。如果設置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,請使用 \$。 |
| ( ) | 標記一個子表達式的開始和結束位置。子表達式可以獲取供以后使用。要匹配這些字符,請使用 \( 和 \)。 |
| * | 匹配前面的子表達式零次或多次。要匹配 * 字符,請使用 \*。 |
| + | 匹配前面的子表達式一次或多次。要匹配 + 字符,請使用 \+。 |
| . | 匹配除換行符 \n之外的任何單字符。要匹配 .,請使用 \。 |
| [ | 標記一個中括號表達式的開始。要匹配 [,請使用 \[。 |
| ? | 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字符,請使用 \?。 |
| \ | 將下一個字符標記為或特殊字符、或原義字符、或向后引用、或八進制轉義符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配換行符。序列 ‘\\’ 匹配 “\”,而 ‘\(’ 則匹配 “(”。 |
| ^ | 匹配輸入字符串的開始位置,除非在方括號表達式中使用,此時它表示不接受該字符集合。要匹配 ^ 字符本身,請使用 \^。 |
| { | 標記限定符表達式的開始。要匹配 {,請使用 \{。 |
| | | 指明兩項之間的一個選擇。要匹配 |,請使用 \|。 |
?
?注釋:
?注釋(?#comment) 用途:主要用于復雜的注釋
常用正則表達式收集:
表單驗證匹配驗證賬號,字母開頭,允許 5-16 字節,允許字母數字下劃線:^[a-zA-Z][a-zA-Z0-9_]{4,15}$驗證賬號,不能為空,不能有空格,只能是英文字母:^S+[a-z A-Z]$驗證賬號,不能有空格,不能非數字:^d+$驗證用戶密碼,以字母開頭,長度在 6-18 之間:^[a-zA-Z]w{5,17}$驗證是否含有 ^%&’,;=?$ 等字符:[^%&',;=?$x22]+匹配Email地址:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*匹配騰訊QQ號:[1-9][0-9]{4,}匹配日期,只能是 2004-10-22 格式:^d{4}-d{1,2}-d{1,2}$匹配國內電話號碼:^d{3}-d{8}|d{4}-d{7,8}$ 評注:匹配形式如 010-12345678 或 0571-12345678 或 0831-1234567匹配中國郵政編碼:^[1-9]d{5}(?!d)$匹配身份證:d{14}(d{4}|(d{3}[xX])|d{1}) 評注:中國的身份證為 15 位或 18 位不能為空且二十字節以上:^[s|S]{20,}$ 字符匹配匹配由 26 個英文字母組成的字符串:^[A-Za-z]+$匹配由 26 個大寫英文字母組成的字符串:^[A-Z]+$匹配由 26 個小寫英文字母組成的字符串:^[a-z]+$匹配由數字和 26 個英文字母組成的字符串:^[A-Za-z0-9]+$匹配由數字、26個英文字母或者下劃線組成的字符串:^w+$匹配空行:n[s| ]*r匹配任何內容:[sS]*匹配中文字符:[x80-xff]+ 或者 [xa1-xff]+只能輸入漢字:^[x80-xff],{0,}$匹配雙字節字符(包括漢字在內):[^x00-xff]總結
以上是生活随笔為你收集整理的Php基础正则表达式篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Php基础文件操作
- 下一篇: web页面屏蔽鼠标右键