摘要:正則表達(dá)式是什么是一種字符串處理的工具搜索匹配搜索替換搜索分割功能強(qiáng)大是一種規(guī)則正則表達(dá)式應(yīng)用范圍數(shù)據(jù)驗(yàn)證數(shù)據(jù)處理過(guò)濾數(shù)據(jù)查詢(xún)各語(yǔ)言都支持正則表達(dá)式相關(guān)函數(shù)正則表達(dá)式一個(gè)匹配返回匹配結(jié)果的次數(shù)執(zhí)行一個(gè)全局正則表達(dá)式匹配返回匹配結(jié)果的次數(shù)
正則表達(dá)式是什么
是一種字符串處理的工具(搜索匹配、搜索替換、搜索分割)
功能強(qiáng)大,是一種規(guī)則
正則表達(dá)式應(yīng)用范圍數(shù)據(jù)驗(yàn)證
數(shù)據(jù)處理/過(guò)濾
數(shù)據(jù)查詢(xún)
各語(yǔ)言(js/php/java/c#)都支持
正則表達(dá)式PHP相關(guān)函數(shù)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 ]]] ) //正則表達(dá)式一個(gè)匹配,返回匹配結(jié)果的次數(shù)
preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) //執(zhí)行一個(gè)全局正則表達(dá)式匹配,返回匹配結(jié)果的次數(shù)
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) //執(zhí)行一個(gè)正則表達(dá)式的搜索和替換
preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) //執(zhí)行一個(gè)正則表達(dá)式搜索并且使用一個(gè)回調(diào)進(jìn)行替換
preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) //通過(guò)一個(gè)正則表達(dá)式分隔字符串
preg_quote ( string $str [, string $delimiter = NULL ] ) //轉(zhuǎn)義正則表達(dá)式字符
preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) //返回給定數(shù)組input中與模式pattern匹配的元素組成的數(shù)組.
正則表達(dá)式組成定界符
一般使用"/",但不限于此 除字母、數(shù)字、反斜杠""的其他字符都可以作為定界符
原子
. 匹配除換行符之外任意字符 d 匹配任意一個(gè)十進(jìn)制數(shù)字 D 匹配任意一個(gè)非十進(jìn)制數(shù)字 s 匹配一個(gè)不可見(jiàn)原子 S 匹配一個(gè)可見(jiàn)原子 w 匹配任意一個(gè)數(shù)字、字母或下劃線(xiàn)[a-zA-Z0-9_] W 匹配任意非一個(gè)數(shù)字、字母或下劃線(xiàn)[^a-zA-Z0-9_] [] 作為一個(gè)原子,匹配[]之間的一個(gè)原子 [^] 作為一個(gè)原子,不能匹配[]之間的一個(gè)原子
元字符
//量詞 {n} 匹配原子恰好出現(xiàn)n次 {n,} 匹配原子出現(xiàn)不少于n次 {n,m} 匹配原子出現(xiàn)至少n次,最多m次 * 相當(dāng)于{0,} + 相當(dāng)于{1,} ? 相當(dāng)于{0,1} //邊界限制 ^ 指定匹配的字符串以什么原子開(kāi)頭 $ 指定匹配的字符串以什么原子結(jié)尾 //模式選擇符 | 多選一 //模式單元 () 多原子作為一個(gè)大原子
模式修正符
i //不區(qū)分大小寫(xiě) s //正則表達(dá)式中.匹配所有字符,包括換行符 U //匹配模式變?yōu)閼卸枘J?只有PHP有,其他語(yǔ)言不兼容,請(qǐng)使用.*?) x //空白忽略preg_filter與preg_replace區(qū)別
當(dāng)匹配的目標(biāo)數(shù)據(jù)是數(shù)組時(shí),preg_filter只返回匹配的數(shù)組元素,preg_replace返回所有數(shù)組元素
正則表達(dá)式例子非空判斷
$pattern = "/S+/"; $ret = preg_match($pattern," ");//false為空
去除空格
$str = "你是誰(shuí) 2 年后"; $pattern = "/s+/"; $ret = preg_replace($pattern,"",$str);
手機(jī)號(hào)匹配
$pattern = "/^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])d{8}$/"; //匹配移動(dòng) $pattern = "^1(3[4-9]|4[7]|5[0-27-9]|7[08]|8[2-478])d{8}$"; //匹配聯(lián)通 $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驗(yàn)證(http/https)
$pattern = "/^https?:////(w+.)+[a-z]+$/";正則表達(dá)式使用場(chǎng)景——模板引擎
實(shí)現(xiàn)原理
1、獲取模板源文件 2、編譯模板并輸出到文件(用正則替換,文件講保存編譯后的模板代碼html+php) 3、執(zhí)行編譯后的模板文件(將得到html,如果要做靜態(tài)化就在此步) 4、輸出模板
簡(jiǎn)單實(shí)現(xiàn)步驟
1、建立2個(gè)文件夾(一個(gè)存放模板源文件、一個(gè)存放模板編譯文件) 2、讀取模板源文件 $outputHtml = file_put_contents($filePath); 3、使用正則進(jìn)行模式替換,然后用一個(gè)新文件存儲(chǔ)起來(lái)
正則進(jìn)行模式替換
$str = "測(cè)試:{{$test}}"; $pattern = "/{{ *$(w+) *}}/"; $arr = preg_replace($pattern,"",$str); //最后$arr="測(cè)試:" //除可以使用1,也可以使用$1 //得到字符串需要?jiǎng)討B(tài)執(zhí)行,可以使用eval(),否則不執(zhí)行,但eval()不能有php開(kāi)始/關(guān)閉標(biāo)簽
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/22601.html
摘要:兼容的正則表達(dá)式已經(jīng)實(shí)現(xiàn)了很多使用不同解析引擎的正則函數(shù)。中主要有兩個(gè)正則解析器一個(gè)稱(chēng)為,另一個(gè)稱(chēng)為兼容正則表達(dá)式。在中,每個(gè)正則表達(dá)式模式都是使用符合格式的字符串。 原文鏈接: Getting Started with PHP Regular Expressions Last-Modified: 2019年5月10日16:23:19譯者注: 本文是面向0正則基礎(chǔ)的phper, 很多...
摘要:規(guī)范為的縮寫(xiě),中文即兼容正則表達(dá)式,由開(kāi)發(fā)的庫(kù),為很多現(xiàn)代工具所使用,大多數(shù)編程語(yǔ)言的正則表達(dá)式也都是集成該規(guī)范。接下來(lái)本文會(huì)對(duì)規(guī)范的正則表達(dá)式作出詳細(xì)介紹。正則語(yǔ)法分隔符當(dāng)使用函數(shù)的時(shí)候,模式需要由分隔符閉合包裹。 概述 正則表達(dá)式(Regular Expression)是一種字符匹配工具,通過(guò)構(gòu)建具有特定規(guī)則的模式,和輸入字符串?dāng)?shù)據(jù)進(jìn)行比較,然后進(jìn)行匹配、分割、替換等等的相關(guān)操作。...
摘要:正則表達(dá)式的都是匹配和替換搜索正則表達(dá)式要匹配的字符串匹配到的字符串匹配到的個(gè)數(shù),沒(méi)有匹配到返回下面是例子執(zhí)行一個(gè)正則表達(dá)式匹配,非貪婪執(zhí)行一個(gè)全局正則表達(dá)式匹配,貪婪執(zhí)行結(jié)果匹配所有僅由有一個(gè)單詞組成的科目名輸出結(jié)果替換正則表達(dá)式要匹 正則表達(dá)式的都是匹配和替換 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...
摘要:正則表達(dá)式的都是匹配和替換搜索正則表達(dá)式要匹配的字符串匹配到的字符串匹配到的個(gè)數(shù),沒(méi)有匹配到返回下面是例子執(zhí)行一個(gè)正則表達(dá)式匹配,非貪婪執(zhí)行一個(gè)全局正則表達(dá)式匹配,貪婪執(zhí)行結(jié)果匹配所有僅由有一個(gè)單詞組成的科目名輸出結(jié)果替換正則表達(dá)式要匹 正則表達(dá)式的都是匹配和替換 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...
摘要:在閱讀這篇文章前最好把同系列文章實(shí)戰(zhàn)正則表達(dá)式一驗(yàn)證手機(jī)號(hào)先仔細(xì)閱讀一遍。但實(shí)際上這樣一個(gè)表達(dá)式是無(wú)法從上面的中提取第一個(gè)元素的這里主要的問(wèn)題是在默認(rèn)情況下點(diǎn)號(hào)字符無(wú)法匹配換行符。但是很遺憾,正則表達(dá)式中沒(méi)有排除型子表達(dá)式或者說(shuō)排除型分組。 這篇文章通過(guò)提取html元素介紹了正則表達(dá)式中模式修飾符、貪婪匹配與非貪婪匹配、Unicode模式、環(huán)視等知識(shí)點(diǎn)。在閱讀這篇文章前最好把同系列文章...
閱讀 1221·2021-11-22 15:22
閱讀 3923·2021-10-19 13:13
閱讀 3698·2021-10-08 10:05
閱讀 3361·2021-09-26 10:20
閱讀 3078·2019-08-29 14:21
閱讀 2264·2019-08-27 10:55
閱讀 1922·2019-08-26 10:31
閱讀 2644·2019-08-23 16:47