PHP正則表達式基礎語法


正則表達式

 

正則表達式是一種字符串搜索工具和匹配工具

Php常用的正則表達式函數如下:

Preg_match($pattern,$subject)  表單驗證等

Preg_match_all($pattern,$subject,array&$matches)

Preg_replace($pattern,$replacement,$subject)  非法詞語過濾等

Preg_filter($pattern,$replacement,$subject)

Preg_grep($pattern,array,$input)

Preg_split($pattern,$subject)

Preg_quote($str)

 

 

$pattern=正則表達式

$subject=匹配的目標數據

 

正則表達式基本語法

界定符

$pattern=’/[0-9]/’;

#[0-9]#

{[0-9]}

 

原子

  • 可見原子

Unicode 編碼表中用鍵盤輸出后肉眼可見的字符

有哪些?

標點:“_?.等等

--英文字母數字 a-z, A-Z,0-9

--漢字、日文、阿拉伯文等其他語言文字

--數理化公式符號

--其他可見字符

 

  • 不可見原子

換行符\n

回車\r

制表符\t

空格

其他不可見符號

量詞

{n} 表示其前面的原子恰好出現n次

{n,} 表示其前面的原子最少出現n次

{n,m}表示其前面的原子最少出現n次,最少出現m次

*匹配 0次、1次或者多次其之前的原子,即{0,}

+ 匹配1次或者多次其之前的原子,即{1,}
? 匹配0次或者1次其之前的原子,即{0,1}

邊界控制

^ 匹配字符串開始的位置

$ 匹配字符串結尾的位置

()匹配其中的整體為一個原子

模式單元

修正模式: 默認為貪婪模式 ,懶惰模式 實在后面加個大寫的U 例如 /123456/U

常見的修正模式

U:懶惰匹配

u:貪婪匹配

i:忽略英文字母大小寫

x:忽略空白(回車,空格等)

s       讓元字符. 匹配包括換行符在內的所有字符

Regexpl正則調試工具

匹配中文時,為避免編碼格式不同產生的錯位,建議先將中文轉換成Unicode編碼

元字符

原子的篩選方式

| 匹配兩個或者多個

[]匹配方括號中的任意一個原子

[^]匹配除方括號中的原子之外的任意字符

 

元字符

原子的集合

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

. 除了換行符之外的任意字符

\d 匹配任意一個十進制數字 ,即[0-9]

\D 匹配任意一個非十進制數字,即[^0-9]

\s 匹配一個不可見原子,即[\f\n\r\t\v]

\S 匹配一個可見原子,即[^\f\n\r\t\v]

\w 匹配任意一個數字、字母或下划線,即[0-9a-zA-Z]

 

 

w:匹配包括下划線的任何單詞字符。類似但不等價於“[A-Za-z0-9_]”,這里的"單詞"字符使用Unicode字符集。

\W:匹配任何非單詞字符。等價於“[^A-Za-z0-9_]”。

如果用re.sub(r'[_|\W]', '', text)  會除掉所有的非單詞或者下划線"_",

如果用re.sub(r'[_|\w]', 'x', text),會用‘x'替換所有的'_'和單詞字符

 

常見的正則表達式

.+ 非空

1(3|4|5|7|8)\d{9}  匹配中國大陸的手機號

^\w+(\.\w+)*@\w+(\.\w+)+$ 驗證郵箱的

^(https?://)?(\w+\.)+[a-zA-Z]+$ 網址的

 

 

山寨Smarty模板引擎的開發

模板引擎的工作原理

獲取模板源文件

編譯模板(正則替換)

輸出給用戶

仿smarty簡易模板引擎,在一個標准的PHP系統中,模板引擎肯定是要有的,便於前端工程師和后端工程師把工作分開來,而且前端工程師不需要懂后端的代碼。

 

在線調試工具

http://cs.smu.ca/~porter/csc/355/regexpal/

 

 

?: 是 不想被捕獲的時候使用 可以提高程序執行速度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM