正则表达式学习笔记2

作者: caohaoyu | 来源:发表于2018-08-23 16:15 被阅读3次

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.个人感受

在开发过程中遇到需要正则表达式的时候,一般会选择上网查找类似的,然后就开始逐步进行调试直到符合预期要求,虽然最终也可以解决问题,但是往往会耗费大量时间。于是下定决心要搞懂正则表达式,所以就有两篇记录学习过程的笔记。
经过学习虽不能说以后直接可以写出要用的表达式,但是可以大幅降低调试的时间。

相关文章

  • 学习笔记 正则表达式

    2021.01.19 北京海淀 -2℃ 小雪转晴 正则表达式学习笔记 说明:该笔记参考“菜鸟教程”网站正则表达式...

  • 正则表达式学习笔记

    [TOC] 正则表达式学习笔记 1. cheatsheet 2. 介绍 2.1 character 有时我们希望m...

  • 正则表达式学习笔记

    正则表达式学习笔记 一篇记录了学习正则表达式的笔记。 1. 转义字符 在 HTMl 中转义字符以 & 符号开头,分...

  • Python学习随笔

    本笔记整理自中谷教育在线教育视频 学习笔记——正则表达式常用符号 这里学习过正则表达式后,简单做了一个爬虫程序,效...

  • Python ☞ day 11

    Python学习笔记之 正则表达式 re模块概述:Python自1.5以后增加了re的模块,提供了正则表达式模式...

  • python正则表达式学习拾遗

    本篇学习笔记参考re——正则表达式 所作,不明白之处可以参阅上述的官方文档。因为是个人学习笔记,所以并不会完全介绍...

  • 正则表达式

    python学习笔记-正则表达式 标签 : python 特殊符号和字符 re模块:核心函数和方法

  • python爬虫day-13(正则表达式)

    个人学习笔记,方便自己查阅,仅供参考,欢迎交流 正则表达式 1.简单示例 开源中国提供的正则表达式测试网址:htt...

  • 正则表达式学习笔记2

    1.前言 之前的一篇文章主要是对正则表达式的基础知识的记录,不过实践方能出真知,接下来主要要结合具体的例子进行学习...

  • 正则表达式学习笔记(2)

    /*正则查找: 如果正则表达式需要查找内容需要使用以下两个对象:Pattern(正则对象)Matcher(匹配器对...

网友评论

    本文标题:正则表达式学习笔记2

    本文链接:https://www.haomeiwen.com/subject/zrrmiftx.html