php正則符號
㈠ php正則表達,漢字大小寫字母數字下劃線以及@符號
郵箱的正則表達式為:/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$/,其他的一樓已經回答得很完備了
㈡ PHP常用正則表達式匯總
1、w就是匹配字母或數字或下劃線或漢字,+則與*差不多,區別是+包括重復0次,而*就可以。=就ushi匹配=號兩個斜杠則表示正則表達式的分界。
2、正則表達式的限定符有:ThinkPHP的自動驗證機制是為了進行表單數據驗證,驗證可以支持function、callback、confirm、equal、unique和regex,這里要講的是使用正則表達式進行驗證。特殊字元許多元字元要求在試圖匹配它們時特別對待。
3、^/?[a-zA-Z0-9=:]*$!是對php中單引號的轉義。或者還有更簡單的!^/?[a-z0-9=:]*$!ii表示忽略大小寫。模式分隔符就是為了區分表達式和像i這樣的模式修飾符而設計的。
㈢ php 時間正則式的表示
最簡單的正則 如 : \d{4}-\d{2}-\d{2}
但是實際情況卻不是那麼簡單,,要考慮,有效性和閏年等問題.....
對於日期的有效范圍,不同的應用場景會有所不同。MSDN中定義的DateTime對象的有效范圍是:0001-01-01 00:00:00到9999-12-31 23:59:59。
UNIX時間戳的0按照ISO 8601規范為 :1970-01-01T00:00:00Z。
先考慮與年份無關的前三條規則,年份可統一寫作
(?!0000)[0-9]{4}
下面僅考慮月和日的正則
1. 包括平年在內的所有年份的月份都包含1-28日
(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])
2. 包括平年在內的所有年份除2月外都包含29和30日
(0[13-9]|1[0-2])-(29|30)
3. 包括平年在內的所有年份1、3、5、7、8、10、12月都包含31日
(0[13578]|1[02])-31)
合起來就是除閏年的2月29日外的其它所有日期
(?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)
接下來考慮閏年的實現
1 : 四年一閏
([0-9]{2}(0[48]|[2468][048]|[13579][26])
2 : 百年不閏,四百年再閏
(0[48]|[2468][048]|[13579][26])00
3 : 合起來就是所有閏年的2月29日
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)
四條規則都已實現,且互相間沒有影響,合起來就是所有符合DateTime范圍的日期的正則
^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$
考慮到這個正則表達式僅僅是用作驗證,所以捕獲組沒有意義,只會佔用資源,影響匹配效率,所以可以使用非捕獲組來進行優化。
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
㈣ php 正則表達式 只能包含字母和數字
式子:/^[a-zA-Z0-9]+$/u
釋義:
(1)「/」:正則表達式的定義,固定的書寫形式;
(2)「^」:表示開始;
(3)「[]」:表示一個字元組,匹配包含的任何字元。例如,「[ab]」匹配「plain」中的「a」;
(4)「a-z」:與小寫字母a-z匹配的字母範圍;
(5)「A-Z」:表示與大寫字母A-Z匹配的字母範圍;
(6)「0-9」:匹配范圍為0-9的數字;
(7)「+」:表示匹配數為一個或多個;
(8)「$」:匹配輸入行的結尾。如果設置了RegExp對象的Multiline屬性,則$也匹配「 」或「 」之前的位置;
(9)「u」:最後一個u是模式修飾符,嚴格來說,它可以是預定義的常數。表示使用unicode進行匹配。
(4)php正則符號擴展閱讀:
其它正則表達式符號的含義:
(1)「*」:與上一個子表達式匹配任意次。例如,zo*匹配「z」以及「zo」和「zoo」。*等效於{0,};
(2)「?」:匹配上一個子表達式零或一次。例如,「做(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?」。 請注意,逗號和兩個數字之間不能有空格。