正則表達式在開發(fā)中不會頻繁使用乳丰,但是需要使用的時候就需要去查閱,這里做一下學習筆記
正則表達式的作用
匹配 分割 替換 查找
正則表達式主要由兩部分組成潮改,pattern 和subject
pattern 是我們想要的結果集,subject 則是搜索的主體
其中pattern的一些知識 可以查閱 30分鐘入門正則表達式
推薦一個博客更簡單的學習正則表達式地址
//放一些常見的匹配
//匹配url
$pattern = '#^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])#i';
//匹配郵箱
$pattern = '/^[a-z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])+\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i';
php中的函數查閱官方文檔
正則匹配的主要工作,在于pattern的寫法上凝果,
以下做一些簡單的說明
//第一個簡單的php示例
$pattern = '/\d+/';//要查找的結果集 匹配一個以上的數字
$subject='dsd1230555d';//要查找的主體 字符串
$result=preg_match($pattern,$subject,$match);
var_dump($result);//打印是否匹配成功
var_dump($match);//打印匹配結果
//第一個簡單的js 示例
var subject='123ddd';
var pattern =/\d+/;//不要加引號 js中的分隔符是/
var res = subject.match(pattern);//簡單的理解是,js的字符串 繼承自string 擁有string的函數
console.log(res);
元字符
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束
限定符
* 重復零次或更多次
+ 重復一次或更多次
? 重復零次或一次
{n} 重復n次
{n,} 重復n次或更多次
{n,m} 重復n到m次
用于睦尽,限定該字符前的
[0-9]{10}//匹配10個數字
\d{10}//匹配10個數字
[aeiou]{3,}匹配3個及其以上的aeiou
范圍符
[0-9] 等價于 \d
[a-z0-9A-Z_] 等價于 \w
[aeios] 匹配aeiou 中任意一個
分支條件
a|b|c 匹配字符中的a 或者b 或者c
分組
重復單個字符(直接在字符后面加上限定符就行了)器净;但如果想要重復多個字符又該怎么辦?你可以用小括號來指定子表達式(也叫做分組)当凡,然后你就可以指定這個子表達式的重復次數了
$pattern = '#([a]\d)+#';// 匹配a1a2
$subject='a1a2345677444dd33344';//
$result=preg_match($pattern,$subject,$match);
反義
有時需要查找不屬于某個能簡單定義的字符類的字符山害。比如想查找除了數字以外,其它任意字符都行的情況沿量,這時需要用到反義
\W 匹配任意不是字母浪慌,數字,下劃線朴则,漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數字的字符
\B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou這幾個字母以外的任意字符
常見匹配
(?:exp) 匹配exp 且包含exp
preg_match('#Windows(?:2000|XP|7)#', 'WindowsXP2000', $matchResult1);
//打印為 WindowsXP
(?=exp) 匹配exp前面的
preg_match('#Windows(?=2000|XP|7)#', 'WindowsXP2000', $matchResult1);
//打印為 Windows
(?<=exp)匹配exp后面的
preg_match('#(?<=2000|XP|7)ssss#', 'WindowsXPssss', $matchResult1);
//打印為 ssss