1、分隔符
分隔符可以是除了特殊字元以外的任何字元,常見的分隔符有:/、#、~等。例:/中間寫正規表示式/
2、元字元
^ :匹配開頭 例:/^ve/匹配以ve開頭的
$:匹配結尾 例:/ve$/匹配以ve結尾的
. :用於匹配除換行符之外的所有字元
+ :用來匹配元字元前的字元出現1次或者多次
* :用來匹配元字元前的字元出現0次或者多次
? :用來匹配元字元前的字元出現0次或者1次
{} :用來精確指定匹配元字元出現的次數
:用來匹配""之中出現過的字元
() :用來控制優先順序,括號內匹配的結果作為模式子串
| :表示或者的意思,可以是某個字元或者另乙個字串
\ :反斜槓用於轉義特殊字元
[^] :如果在""中出現了"^",代表本表示式不匹配""內出現的字元
[a-z] :"-"此時表示取值範圍,可取a到z的26個字母
\w:用於匹配字母,數字或下劃線字元,相當於"/[a-za-z0-9_]/"
\d:用於匹配從0到9的數字,相當於"/[0-9]/"
\s:用於匹配單個的空格符
3、修飾符
i :如果在修飾符中加上"i",則正則將會取消大小寫敏感性
m :如果在修飾符中加上"m",那麼開始和結束將會指字串的每一行:每一行的開頭就是"^",結尾就是"$"
s:如果在修飾符中加入"s",那麼預設的"."代表除了換行符以外的任何字元將會變成任意字元,也就是包括換行符
x:如果加上該修飾符,表示式中的空白字元將會被忽略
1、正規表示式中的 .*? 或 .+? 是什麼意思?
.*和.+表示貪婪匹配:在滿足匹配時,匹配盡可能長的字串,預設情況下,採用貪婪匹配
例如:如果用正則匹配src中內容非懶惰模式匹配,正規表示式為src=".*"
匹配結果是:src="test.jpg" width="60px" height="80px"
意思是從="往後匹配,直到最後乙個"匹配結束
.*?和.+?表示非貪婪匹配:在滿足匹配時,匹配盡可能短的字串,使用?來表示非貪婪匹配
例如:如果採用懶惰模式正則,正規表示式為src=".*?"
匹配結果是:src="test.jpg"
因為匹配到第乙個"就結束了一次匹配,不會繼續向後匹配
幾個常用的非貪婪匹配模式
*? 重複任意次,但盡可能少重複
+? 重複1次或多次,但盡可能少重複
?? 重複0次或1次,但盡可能少重複
? 重複n到m次,但盡可能少重複
? 重複n次以上,但盡可能少重複
2、php**驗證郵箱位址的合法性
function checkemail($email)
if (substr_count($email, "@") > 1)
$pattern = '/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/';
$rs = preg_match($pattern, $email, $matches);
//var_dump($matches);
return (bool)$rs;
}
(一)校驗數字的表示式
1 數字:^[0-9]*$
2 n位的數字:^\d$
3 至少n位的數字:^\d$
4 m-n位的數字:^\d$
5 零和非零開頭的數字:^(0|[1-9][0-9]*)$
6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9])?$
7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d)?$
8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$
9 有兩位小數的正實數:^[0-9]+(.[0-9])?$
10 有1~3位小數的正實數:^[0-9]+(.[0-9])?$
11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*)$ 或 ^\+?[1-9][0-9]*$
12 非零的負整數:^\-[1-9]0-9"*$ 或 ^-[1-9]\d*$
13 非負整數:^\d+$ 或 ^[1-9]\d*|0$
14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
(二)、校驗字元的表示式
1 漢字:^[\u4e00-\u9fa5]$
2 英文和數字:^[a-za-z0-9]+$ 或 ^[a-za-z0-9]$
3 長度為3-20的所有字元:^.$
4 由26個英文本母組成的字串:^[a-za-z]+$
5 由26個大寫英文本母組成的字串:^[a-z]+$
6 由26個小寫英文本母組成的字串:^[a-z]+$
7 由數字和26個英文本母組成的字串:^[a-za-z0-9]+$
8 由數字、26個英文本母或者下劃線組成的字串:^\w+$ 或 ^\w$
9 中文、英文、數字包括下劃線:^[\u4e00-\u9fa5a-za-z0-9_]+$
10 中文、英文、數字但不包括下劃線等符號:^[\u4e00-\u9fa5a-za-z0-9]+$ 或 ^[\u4e00-\u9fa5a-za-z0-9]$
11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+
12 禁止輸入含有~的字元:[^~\x22]+
正規表示式知識點
re.match與re.search的區別 re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none 而re.search匹配整個字串,直到找到乙個匹配。flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等 import re s 1...
正規表示式知識點
正則的知識點 1.建立例項 var reg new regexp pattern,flag d g 2.flag 識別符號 1.i 忽略大小寫匹配 2.m 多行匹配 3.g 全域性匹配 應用與所有,而不是找到第乙個就停止 3.第一段知識點 1.xyz xyz中任意乙個字元 等價於 x z 2.xyz...
正規表示式知識點總結
1.正規表示式 符合一定規則的表示式。2.作用 用於專門操作字串。3.特點 用一些特定的符號來表示一些 操作,這樣可以簡化書寫。所以學習正規表示式,就是在學習一些特殊符號的使用。4.好處 可以簡化對字串的複雜操作。5.弊端 符號定義越多,正則越長,閱讀性越差。1.匹配 boolean matches...