以前的一篇文章主要是對正則表達式的基礎知識的記錄,不過實踐方能出真知,接下來主要要結合具體的例子進行學習的。正則表達式
(注:在正則表達式中 "/" 是在某些語言中做爲開始和結束定界符的標誌存在的)json
/^1[3456789]\d{9}$/
$regex = '/^1[3456789]\d{9}$/';
$mobileList = array(
'15168901234',
'123456',
'12345678901',
'25168901234',
);
foreach ($mobileList as $mobile) {
if (preg_match($regex, $mobile)) {
echo $mobile . "| 是正確的手機號\n";
} else {
echo $mobile . "| 不是手機號\n";
}
}
複製代碼
15168901234| 是正確的手機號
123456| 不是手機號
12345678901| 不是手機號
25168901234| 不是手機號
複製代碼
$header = 'HTTP/1.1 200 OK Date: Wed, 23 May 2018 01:42:48 GMT Content-Type: application/json; charset=utf-8 Content-Length: 57 Connection: keep-alive Set-Cookie: user="2|1:0|10:157XXXXX368|4:user|16:MDXXXXXg0MzY5|f80558eXXXXXXXXXX94b3a";';
$regex = '/(?<=user=)\"?[\|\d\:\=a-zA-Z]{1,}/';
preg_match($regex, $header, $matches);
var_dump(trim($matches[0], "\""));
複製代碼
2|1:0|10:157XXXXX368|4:user|16:MDXXXXXg0MzY5|f80558eXXXXXXXXXX94b3a
bash
$regex = '/^(\w+):\/\/([^\/:]+)(:\d*)?([^# ]*)/';
$url = "https://juejin.im/user/59bf3ba9518825231f64bd05/posts";
preg_match($regex, $url, $matches);
var_dump($matches);
複製代碼
array(5) {
[0]=>
string(53) "https://juejin.im/user/59bf3ba9518825231f64bd05/posts"
[1]=>
string(5) "https"
[2]=>
string(9) "juejin.im"
[3]=>
string(0) ""
[4]=>
string(36) "/user/59bf3ba9518825231f64bd05/posts"
}
複製代碼
$regex = '/^<(\w+)\s*\/?>\w*(?:<\/\1>|)$/';
$string = "<span></span>";
preg_match($regex, $string, $matches);
var_dump($matches);
複製代碼
array(2) {
[0]=>
string(14) "<span/></span>"
[1]=>
string(4) "span"
}
複製代碼
亮點是 "\1" 獲取第一個小括號裏面的匹配值,第一次看到這種用法,學習了!cookie
在開發過程當中遇到須要正則表達式的時候,通常會選擇上網查找相似的,而後就開始逐步進行調試直到符合預期要求,雖然最終也能夠解決問題,可是每每會耗費大量時間。因而下定決心要搞懂正則表達式,因此就有兩篇記錄學習過程的筆記。 通過學習雖不能說之後直接能夠寫出要用的表達式,可是能夠大幅下降調試的時間。app