1.密碼: 匹配6~12字元 && 至少一個數字 && 至少一個英文(大小寫通用)
>> /^(?=^.{6,12}$)((?=.*[0-9])(?=.*[a-z|A-Z]))^.*$/
推薦 : 線上測試正則表達式的網站 , 並且還告訴你配對到的結果 , 可以先在這個網站來測試你的正則表示法
需要被脫逸的符號 :
\ : 可以脫逸字元
[ : ──┐
──>[xyz] 比對中括孤內的任一個字元 , 但不會將配對到的字串存入RegExp變數中
] : ──┘
( : ──┐
──>合起來 (x) 比對x並將符合的部份存入一個變數, /(a*) and (b*)/ 可以對 ‘aaa and bb’ 中的’aaa’和’bb’,
) : ──┘ 並將這兩個比對得到的字串設定至數字 RegExp.$1 和 RegExp.$2
. : 比對任何一個字元 , 但換行符號不算
^ : 啟始位置, \A 亦是
$ : 結束位置, \z 亦是
* : 比對前一個字元 , 零次或更多次, 等同{0,}
? : 比對前一個字元 , 零次或一次 , 等同{0,1}
+ : 比對前一個字元 , 一次或更多次 , 等同 {1,}
| : 或者 , 等於OR , 邏輯運算子(Logical Operators)
符號對照 :
\b | 匹配一單詞(限英文) 如: '/\bweb\b/', 可匹配'xxx web XXX.' 不能匹配'xxx website XXX.' |
|
\d | [0-9] | 0~9(數字) |
\D | [^0-9]或[^\d] | 非數字 |
\l | [a-z] | 小寫英文 |
\L | [^a-z] | 非小寫英文 |
\u | [A-Z] | 大寫英文 |
\U | [^A-Z] | 非大寫英文 |
[0-9a-zA-Z] | 數字跟英文 | |
\n | 比對換行符號 | |
\r | 比對carriage return | |
\s | [\f\n\r\t\v] |
比對任一個空白字元 (White space character) |
\S | [^ \f\n\r\t\v] | 比對任一個非空白字元 |
\t | 比對字位字元(Tab) | |
\v | 比對垂直定位字元(Vertical tab) | |
\w | [A-Za-z0-9_] | 比對數字、字母字元或底線 |
\W | [^A-Za-z0-9_] | 比對非數字、字母字元或底線 |
比對方式 :
g | 全域比對(Global match) |
i | 忽略大小寫(Ignore case) |
gi | 全域比對並忽略大小寫 |
語法結構 :
php : preg_match(string $pattern
, string $subject
)
示範:
if ( preg_match('/^\d+$/', '123456') ) { echo '這是一串數字' ; } else { echo '這不是一串純數字' ; }
一些範例 :
1. 一網址取 domain出來
preg_match('#^(?:https?://)?([^/]+)#i', 'https://www.domain.net/index.html', $matches); $host = $matches[1]; print_r($host);exit;
數量 : 不能為0的正整數
/^[1-9]\d*$/
[1-9] : 開頭要1~9
\d* : 0~9的數字出現 0個或多個
價格 : 0 或是正整數
/^(0|[1-9]\d*)$/
0 : 零
| : 或者
[1-9]\d* : 正整數
中文姓名 : 檢查中文字2~5個字
javascript : /^[\u4e00-\u9fa5]{2,5}$/
註 : 中文的正則, 如果把javascript語法搬到php會出現
Warning : preg_match()[function.preg-match] : Compilation failed : PCRE does not support \L , \I , \N , \U or \u at offset 9 的錯誤
解決方法 :
將\u改成\x , 並且將後面的中文代碼用{ } 括起來 , 在表示法最後的斜線後加一個u
php : /^[\x{4e00}-\x{9fa5}]{2,5}$/u
[\x{4e00}-\x{9fa5}] : 繁體中文字
{2,5} : 出現2~5次
email : email格式
/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
password : 至少一個英文不分大小寫及一個數字 , 8~12位
/^(?!.*[^a-zA-Z0-9])(?=.*\d)(?=.*[a-zA-Z]).{8,12}$/
室內電話 : 離鳥區碼最多4碼 , 後面最少5碼最多8碼 . 例如 : 02-42365514
/^[0]{1}[0-9]{1,3}[-]{1}[0-9]{5,8}$/ (前面4碼後面8碼 , 會超過10碼條件 , 所以要再判斷一次 , 如下一行)
/^[0-9-]{10,11}$/ (共10或11碼)
要驗證兩次 , 如果下次有空的話再改成一行表示法 , 因為很久沒用這個 , 所以有點懶
地址 : 禁止中,英,數,減號( - )以外的字元,至少要連續中文4個字,至少一位數字,字元數共8~40位
/^(?!.*[^\u4e00-\u9fa5a-zA-Z0-9-])(?=.*[\u4e00-\u9fa5]{4,})(?=.*\d).{8,40}$/
網址 :
/((http[s]{0,1}|ftp):\/\/[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,4})(:\d+)?(\/[a-zA-Z0-9\.\-~!@#$%^&*+?:_\/=<>]*)?)/g
網址二版(2013/01/21) :
((http[s]{0,1}|ftp):\/\/[a-zA-Z0-9\.\-\_\/]+\.([a-zA-Z]{2,4})(:\d+)?(\/[a-zA-Z0-9\.\-~!@#$%^&*+?:_\/=<>]*)?)
正規取代驗證多餘空白:
^(.*[^\s])?\s+$ 取代成 \1
- ^開頭
- $結尾
- ( )裡的東西代表$1
- [^\s] 結尾無空白
- $1 可有可無
- \s+結尾為空白
來源網址: http://italwaysrainonme.blogspot.tw/2013/01/blog-post.html