正則(PHP和JS)
阿新 • • 發佈:2018-12-17
警告:這不是詳細說明正則怎麼寫的文章。
一、正則表示式
- 時間:小時 00-23
'/(^[0-1][0-9]$)|(^2[0-3]$)/';
- 時間:分鐘 00-59
'/^[0-5][0-9]$/';
- 手機號:1開頭,第二個是3或4或5或7或8,後邊9位數字結尾
'/^1[3|4|5|7|8]\d{9}/';
- 郵箱
'/^[\w-]{4,}@[\w]+\.(com|cn)$/';
二、PHP正則方法
preg_match()
返回值匹配次數 0 或 1,第一次匹配後停止搜尋。$str = 'abcdef'; //用法一,根據返回值判斷字串是否符合正則 echo preg_match('/abc/',$str); #輸出1 //用法二,傳入第三個引數,取址生成一個數組。
preg_match_all()
類似上邊,返回值匹配次數 0 或 n。$str = 'ABCdeABC'; //用法一 echo preg_match_all('/ABC/',$str);#輸出2 //用法二,match變成二維陣列。 preg_match_all('/ABC(de)?/',$str,$match
preg_replace()
返回替換後的字串$str = 'ABCdeABC'; echo preg_replace('/ABC/','abc',$str);# 輸出abcdeabc
preg_grep()
返回匹配到的陣列$arr1 = ['ABCdeABC','abc','ABC']; $arr2 = preg_grep('/ABC/',$arr1); print_r($arr2); //Array ( [0] => ABCdeABC [2] => ABC )
三、JS正則寫法
- 語法直接量
/pattern/attributes
var str = 'abc123de'; /[a-z]/g; // 注意,
- 建立 RegExp 物件的語法
new RegExp(pattern, attributes)
var regexp = new RegExp(/[a-z]/,'g');
注1:JS的正則是不需要單引號或者雙引號包著的。 注2:關於attributes i 執行對大小寫不敏感的匹配。 g 執行全域性匹配(查詢所有匹配而非在找到第一個匹配後停止)。 m 執行多行匹配。
四、JS正則方法
regexp.test()
檢索,字串是否符合正則表示式,返回 true 或 false/abc/i.test('ABCdeABC'); //true
regexp.exec()
匹配, 無則返回null
。var str = "ABCdeABC"; var regexp = new RegExp("ABC","g"); var result; while ((result = regexp.exec(str)) != null) { console.log(result,result.index,regexp.lastIndex); }
五、JS字串方法中的正則
str.search()
搜尋,返回第一個與正則匹配的子串位置, 無返回-1。var str = 'ABCdeABC'; str.search(/BC/);//返回1 //如果明確搜尋什麼,還是用indexOf('BC')吧...
str.match()
匹配,返回匹配到的陣列, 無則返回null
。str.match(/abc/ig);//返回 ['ABC','ABC']
str.replace()
替換,返回替換後的字串str.replace(/abc/i,"");//返回deabc str.replace(/abc/ig,"");//返回de //隱藏手機號中間四位 '15388880131'.replace(/(\d{3})(\d{4})(\d{4})/,"$1****$3"); //返回153****0131,這裡$1,$2,$3分別代表3個()的匹配項。