1.前言
之前的一篇文章主要是对正则表达式的基础知识的记录,不过实践方能出真知,接下来主要要结合具体的例子进行学习的。
2.具体实践
(注:在正则表达式中 "/" 是在某些语言中作为开始和结束定界符的标志存在的)
(1) 手机号检验:
正则表达式:/^1[3456789]\d{9}$/
详解:
"^1" 代表从字符串开始的位置进行匹配的,开头必须是"1";
"[3456789]"代表规定第二位要从这里面选择;
"\d{9}$" 代表剩下的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| 不是手机号
(2)提取cookies
正则表达式:'/(?<=user=)"?[|\d:=a-zA-Z]{1,}/'
详解:
'(?<=user=)'使用的是反向肯定预查,从'user='处开始匹配查找字符串(注:预查表示非获取匹配,匹配内容不会使用)
'"?' 表示有子表达式'"'零次或者一次
'[|\d:=a-zA-Z]{1,}' 之后内容包含'|'、':'、数字、大小写字符至少一次
运行代码
$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
(3)获取url信息
正则表达式:'/(\w+)://([/:]+)(:\d)?([^ ])/$'
详解:
'(\w+)' 第一部分由多个字母、数字、下划线构成
'://' 第一部分与第二部分分隔为'://'
'([^/:]+)' 第二部分使用的是负值字符范围,除了'/'、':'外都可以匹配
'(:\d*)?' 第三部分为':'开始,数字重复零次或者多次,第三部分整体重复零次或者一次
'([^ ]*)' 第四部分使用的是负值字符范围,除了空格所有都可以匹配
运行代码
$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"}
3.个人感受
在开发过程中遇到需要正则表达式的时候,一般会选择上网查找类似的,然后就开始逐步进行调试直到符合预期要求,虽然最终也可以解决问题,但是往往会耗费大量时间。于是下定决心要搞懂正则表达式,所以就有两篇记录学习过程的笔记。
经过学习虽不能说以后直接可以写出要用的表达式,但是可以大幅降低调试的时间。
作者:caohaoyu
链接:https://www.jianshu.com/p/edae9ded71b6
共同学习,写下你的评论
评论加载中...
作者其他优质文章