摘要:正則表達式是什么是一種字符串處理的工具搜索匹配搜索替換搜索分割功能強大是一種規則正則表達式應用范圍數據驗證數據處理過濾數據查詢各語言都支持正則表達式相關函數正則表達式一個匹配返回匹配結果的次數執行一個全局正則表達式匹配返回匹配結果的次數
正則表達式是什么
是一種字符串處理的工具(搜索匹配、搜索替換、搜索分割)
功能強大,是一種規則
正則表達式應用范圍數據驗證
數據處理/過濾
數據查詢
各語言(js/php/java/c#)都支持
正則表達式PHP相關函數preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) //正則表達式一個匹配,返回匹配結果的次數
preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) //執行一個全局正則表達式匹配,返回匹配結果的次數
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) //執行一個正則表達式的搜索和替換
preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) //執行一個正則表達式搜索并且使用一個回調進行替換
preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) //通過一個正則表達式分隔字符串
preg_quote ( string $str [, string $delimiter = NULL ] ) //轉義正則表達式字符
preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) //返回給定數組input中與模式pattern匹配的元素組成的數組.
正則表達式組成定界符
一般使用"/",但不限于此 除字母、數字、反斜杠""的其他字符都可以作為定界符
原子
. 匹配除換行符之外任意字符 d 匹配任意一個十進制數字 D 匹配任意一個非十進制數字 s 匹配一個不可見原子 S 匹配一個可見原子 w 匹配任意一個數字、字母或下劃線[a-zA-Z0-9_] W 匹配任意非一個數字、字母或下劃線[^a-zA-Z0-9_] [] 作為一個原子,匹配[]之間的一個原子 [^] 作為一個原子,不能匹配[]之間的一個原子
元字符
//量詞 {n} 匹配原子恰好出現n次 {n,} 匹配原子出現不少于n次 {n,m} 匹配原子出現至少n次,最多m次 * 相當于{0,} + 相當于{1,} ? 相當于{0,1} //邊界限制 ^ 指定匹配的字符串以什么原子開頭 $ 指定匹配的字符串以什么原子結尾 //模式選擇符 | 多選一 //模式單元 () 多原子作為一個大原子
模式修正符
i //不區分大小寫 s //正則表達式中.匹配所有字符,包括換行符 U //匹配模式變為懶惰模式(只有PHP有,其他語言不兼容,請使用.*?) x //空白忽略preg_filter與preg_replace區別
當匹配的目標數據是數組時,preg_filter只返回匹配的數組元素,preg_replace返回所有數組元素
正則表達式例子非空判斷
$pattern = "/S+/"; $ret = preg_match($pattern," ");//false為空
去除空格
$str = "你是誰 2 年后"; $pattern = "/s+/"; $ret = preg_replace($pattern,"",$str);
手機號匹配
$pattern = "/^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])d{8}$/"; //匹配移動 $pattern = "^1(3[4-9]|4[7]|5[0-27-9]|7[08]|8[2-478])d{8}$"; //匹配聯通 $pattern = "^1(3[0-2]|4[5]|5[56]|7[0156]|8[56])d{8}$"; //匹配電信 $pattern = "^1(3[3]|4[9]|53|7[037]|8[019])d{8}$";
email匹配
$pattern = "/^(w)+(.w+)*@(w)+(.w+)+$/";
URL驗證(http/https)
$pattern = "/^https?:////(w+.)+[a-z]+$/";正則表達式使用場景——模板引擎
實現原理
1、獲取模板源文件 2、編譯模板并輸出到文件(用正則替換,文件講保存編譯后的模板代碼html+php) 3、執行編譯后的模板文件(將得到html,如果要做靜態化就在此步) 4、輸出模板
簡單實現步驟
1、建立2個文件夾(一個存放模板源文件、一個存放模板編譯文件) 2、讀取模板源文件 $outputHtml = file_put_contents($filePath); 3、使用正則進行模式替換,然后用一個新文件存儲起來
正則進行模式替換
$str = "測試:{{$test}}"; $pattern = "/{{ *$(w+) *}}/"; $arr = preg_replace($pattern,"",$str); //最后$arr="測試:" //除可以使用1,也可以使用$1 //得到字符串需要動態執行,可以使用eval(),否則不執行,但eval()不能有php開始/關閉標簽
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22601.html
摘要:兼容的正則表達式已經實現了很多使用不同解析引擎的正則函數。中主要有兩個正則解析器一個稱為,另一個稱為兼容正則表達式。在中,每個正則表達式模式都是使用符合格式的字符串。 原文鏈接: Getting Started with PHP Regular Expressions Last-Modified: 2019年5月10日16:23:19譯者注: 本文是面向0正則基礎的phper, 很多...
摘要:正則表達式的都是匹配和替換搜索正則表達式要匹配的字符串匹配到的字符串匹配到的個數,沒有匹配到返回下面是例子執行一個正則表達式匹配,非貪婪執行一個全局正則表達式匹配,貪婪執行結果匹配所有僅由有一個單詞組成的科目名輸出結果替換正則表達式要匹 正則表達式的都是匹配和替換 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...
摘要:正則表達式的都是匹配和替換搜索正則表達式要匹配的字符串匹配到的字符串匹配到的個數,沒有匹配到返回下面是例子執行一個正則表達式匹配,非貪婪執行一個全局正則表達式匹配,貪婪執行結果匹配所有僅由有一個單詞組成的科目名輸出結果替換正則表達式要匹 正則表達式的都是匹配和替換 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...
摘要:在閱讀這篇文章前最好把同系列文章實戰正則表達式一驗證手機號先仔細閱讀一遍。但實際上這樣一個表達式是無法從上面的中提取第一個元素的這里主要的問題是在默認情況下點號字符無法匹配換行符。但是很遺憾,正則表達式中沒有排除型子表達式或者說排除型分組。 這篇文章通過提取html元素介紹了正則表達式中模式修飾符、貪婪匹配與非貪婪匹配、Unicode模式、環視等知識點。在閱讀這篇文章前最好把同系列文章...
閱讀 1166·2021-11-22 15:22
閱讀 3837·2021-10-19 13:13
閱讀 3570·2021-10-08 10:05
閱讀 3292·2021-09-26 10:20
閱讀 2984·2019-08-29 14:21
閱讀 2192·2019-08-27 10:55
閱讀 1871·2019-08-26 10:31
閱讀 2578·2019-08-23 16:47