『壹』 php從入門到精通—正則表達式—初識正則表達式、正則表達式語法規則、相關函數、常見應用、用法自查表
初識正則表達式
正則表達式,一種用於匹配和處理文本的字元串描述工具,廣泛應用於Linux、Unix系統工具中,如Vi編輯器、Perl或PHP腳本語言以及Shell腳本等,展現出其強大的跨語言、跨系統應用能力。學習正則表達式,不僅能夠簡化文本處理任務,還能提高程序性能和代碼效率。
正則表達式語法規則
行定位符(^和$)
通過行定位符(^和$),正則表達式支持定位功能,分別用於匹配字元串的開始和結束位置,精準控制字元在字元串中的定位。
單詞定界符(\b和\B)
\b用於匹配單詞邊界,而\B匹配非單詞邊界,幫助識別文本中的單詞分界,增強正則表達式的精確度。
字元類
通過方括弧表達式([]),正則表達式實現對特定字元集的匹配,如忽略大小寫的字元匹配,提升文本處理的靈活性。
選擇字元(|)
|表示「或」操作,允許匹配多個選項之一,簡化復雜匹配條件的表達。
連字元(-)
連字元簡化表達式,匹配連續字元,如數字、字母等,提高匹配效率。
反義字元
使用^表示反義字元,匹配不在指定范圍內的任意字元,優化文本匹配邏輯。
限定符
限定符指定匹配組件的重復次數,實現精確的文本匹配,提高正則表達式的應用范圍。
點字元(.)
.匹配除換行符外的任意單個字元,用於靈活匹配文本中的字元。
轉義字元
轉義字元將特殊字元轉換為普通字元,如\.匹配字元.,確保正則表達式中的特殊字元正常生效。
反斜線(\)
\在正則表達式中用於轉義特殊字元,同時具有其他功能,如後接字母表示更多功能。
括弧字元
括弧用於改變優先順序,組合小原子為大原子,整合匹配項,簡化匹配邏輯。
反向引用
反向引用允許匹配連續出現的字元串或字母,通過表達式的「記憶」功能實現,提高匹配效率。
正則表達式相關函數
preg_match()函數
用於對指定字元串進行匹配,返回匹配結果或0(未匹配)。
preg_match_all()函數
全局匹配功能,從頭到尾搜索匹配結果,直至獲取所有相匹配的內容。
preg_replace()函數
實現字元串搜索和替換,功能強大,適用於復雜文本處理。
preg_split()函數
完成字元串的復雜分割操作,如同時分割多個字元。
preg_grep()函數
匹配數組中的元素,篩選出符合正則表達式模式的單元。
正則表達式常見應用
手機號碼和郵箱驗證
編寫正則表達式匹配規范格式的手機號碼和郵箱,確保數據輸入的准確性。
驗證網址URL合法性
構建正則表達式匹配合法的URL結構,確保網路資源的有效訪問。
正則表達式用法自查表
總結正則表達式的用法,提供方便快捷的學習參考,幫助用戶掌握正則表達式的書寫規則。
總結:學習正則表達式能夠有效提升文本處理效率,通過掌握其基本概念、語法規則以及常見應用,用戶能夠靈活運用正則表達式解決實際問題,提高程序開發和文本處理的能力。
『貳』 php 正則表達式如何判斷一個字元串是否為合法的四則數學算式
代碼如下(經測通過):
<?php
$str="((1+1)*3.3)/10-12+(1+1)";
if(preg_match("/[+-*/.]{2}|[^+-*/()d.]+/i",$str,$matches)){
echo'非法算式';
}else{
if(substr_count($str,"(")==substr_count($str,")")){
echo'合法算式';
}else{
echo'括弧不匹配';
}
}
?>
判斷str里是否存在連續運算符、小數點或運算符、括弧、數字以外的字元
若存在則非法
若不存在則判斷str里( 和 )數量是否一致
『叄』 超常用的PHP正則表達式收集整理
以下就是對超常用的PHP正則表達式進行的收集整理,為了方便大家更快更好的掌握php正則表達式。
:]*$!是對php中單引號的轉義。或者還有更簡單的!^/?[a-z0-9=:]*$!ii表示忽略大小寫。模式分隔符就是為了區分表達式和像i這樣的模式修飾符而設計的。
什麼是正則表達式:簡單的說,正則表達式是一種可以用於模式匹配和替換的強大工具。在幾乎所有的基於UNIX/LINUX系統的軟體工具中找到正則表達式的痕跡,例如:Perl或PHP腳本語言。
ThinkPHP的自動驗證常用的正則一般我們見的比較多的是設置規則為require、email之類的,其實這些本身也是屬於正則表達式驗證方式,只是系統內置定義了一些常用的正則表達式而已。
關鍵地方是漢字的表示xa0-xff。下面是我寫的例子程序,調試通過:?phpstr=漢字123456abcdef+-*/ABCDE!@#$%^&*()結尾。
『肆』 php 正則表達式 只能包含字母和數字
式子:/^[a-zA-Z0-9]+$/u
釋義:
"/":表示正則表達式的定義,固定寫法。
"^":表示開頭。
"[]":表示字元組。匹配所包含的任意一個字元。如,「[ab]」匹配「plain」中的「a」。
"a-z":表示匹配小寫字母a-z的字母範圍。
"A-Z":表示匹配大寫字母A-Z的字母範圍。
"0-9":表示匹配0-9的數字范圍。
"+":表示匹配次數大於等於1。
"$":匹配輸入行尾。如果設置了RegExp對象Multiline屬性,$也匹配「 」或「 」之前的位置。
"u":最後的u是模式修飾符,嚴格的說可能叫預定義常量。表示使用unicode進行匹配。
(4)php正則表達式詳解擴展閱讀:
其它正則表達式符號的含義:
1、"*":匹配前面的子表達式任意次。例如,zo*能匹配「z」,也能匹配「zo」以及「zoo」。*等價於{0,}。
2、"?":匹配前面的子表達式零次或一次。例如,「do(es)?」可以匹配「do」或「does」。?等價於{0,1}。
3、"{n}":n是一個非負整數。匹配確定的n次。例如,「o{2}」不能匹配「Bob」中的「o」,但是能匹配「food」中的兩個o。
4、"{n,}":n是一個非負整數。至少匹配n次。例如,「o{2,}」不能匹配「Bob」中的「o」,但能匹配「foooood」中的所有o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。
5、"{n,m}":m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,「o{1,3}」將匹配「fooooood」中的前三個o為一組,後三個o為一組。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。
『伍』 php正則表達式匹配一段中文,中間有換行,空白,應該怎麼寫
有多種處理方法:
1、使用[sS]匹配任意字元,而不是使用「.」
2、使用s單行修飾模式,例:$pattern='#abc.*?def#s';//能匹配abc換行def
3、使用s*匹配換行和空格,php里s能匹配空白字元,含換行
php里的中文使用[x7f-xff]表示,因此,使用正則:
$pattern='#[x7f-xff]+(?:s*[x7f-xff]+)*#';即可