程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php使用正則表達式

php使用正則表達式

編輯:關於PHP編程

正則表達式在所有編程語言中都是比較重要的知識,php也提供了正則表達式可以通過正則來進行字符串查找和替換,基本上我們可以把java的正則用在php上

一 正則規范

1.常用的正則規范

\w 表示字母、數字、下劃線

\W 表示非字母、數字、下劃線

\d 表示數字

\D 表示非數字

\s 表示所有空白字符(換行、空格等)

\S 表示所有非空白字符

^ 行的開頭(用於定界)

$ 行的結尾(用於定界)

. 匹配除換行之外的任意字符

[abc] 字符a,b,c

[^abc] 除了a,b,c之外的任意字符

[a-zA-Z0-9] 表示由字母、數字組成

\n 表示換行

\\ 表示反斜槓


2.數量表示(X表示一組規范)

X? 可以出現0次或1次

X+ 可以出現1次或多次

X* 可以出現0次、1次或多次

X{n} 必須出現n次

X{n,} 必須出現n次以上

X{n,m} 必須出現n至m次


3.邏輯運算符(X、Y表示一組規范)

XY X規范後跟著Y規范

(X) 作為一個捕獲組規范(子表達式)

X|Y X規范或Y規范


二 php中怎樣使用正則

1.使用正則表達式查找固定格式的字符

php提供了preg_match()和preg_match_all()兩個方法供我們使用,使用這兩個方法可以做字符串格式校驗和查找

(1) 取出字符串裡的所有四位數

使用之前要注意,php裡規定我們把正則規范寫在P的位置上 ‘/P/i’,先就取四位數這個舉例,代碼如下

echo "

取出字符串裡的所有四位數

"; $str1="abcd1034yu3029"; preg_match_all('/\d{4}/i', $str1,$arr1); foreach ($arr1[0] as $val){ echo "$val"."
"; }

要說明的是$arr1,這個是一個二維數組,php把匹配上的所有的字符放在這個數組裡


(2)取出類似1111、3333這種格式的字符串

這種情況就要使用字表達式了,代碼如下

echo "

取出字符串裡的4位數要求每位數字都相同,例如1111、4444、5555、6666

"; $str2="abcd1034yu3029sd3333"; preg_match_all('/(\d)\1{3}/i', $str2,$arr2); foreach ($arr2[0] as $val){ echo "$val"."
"; }
下面是兩段代碼的運行效果

\

(3)取出類似1111-2222-3333這種格式的字符串

echo "

取出類似1111-2222-3333這種格式的字符串

"; $str3="ab3333-5555-6666cd1034yu3029sd3333"; preg_match_all('/(\d)\1{3}-(\d)\2{3}-(\d)\3{3}/i', $str3,$arr3); foreach ($arr3[0] as $val){ echo "$val"."
"; }

有興趣可以使用print_r()打印下這個$arr3,裡面有2個數組,第一個是匹配出來的字符串,第二個是字表達式的值

\

(4)來一個稍微復雜點的,取出類似1111-232-3333、1111-575-3333這種格式的字符串的最後4個數字

echo "

取出類似1111-232-3333、1111-575-3333這種格式的字符串的最後4個數字

"; $str4="ab3333-575-6666cd10348888-464-9999"; preg_match_all('/(\d)\1{3}-(\d)\d\2-(\d)\3{3}/i', $str4,$arr4); foreach ($arr4[0] as $val){ $nums=explode("-", $val); echo "$nums[2]"."
"; }


\

(5)過濾重復字符<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">echo "

過濾重復的字符

"; $repeatstr="我愛愛和和平"; preg_match_all('/(\w)\1*/iu', $repeatstr,$arr); $finalStr=""; foreach ($arr[1] as $val){ $finalStr.=$val; }
/i後面的u表示一種規范,表示匹配UTF-8的字符,還有其他幾種大家可以查看php開發文檔

\

2.還有一種比較復雜的匹配叫環視匹配

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved