本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com

在面试中,考官往往喜欢基础扎实的面试者,而正则表达式相关的考点,往往是大家容易忽视的一个点,今天冷月就来帮各位小伙伴们梳理一下,在面试中正则表达式相关的注意点。

回顾真题

至少写出一种验证139开头的11位手机号码的正则表达式

答案:

/^139\d{8}$/

考点分析

很明显,面试官主要想考察大家对于正则表达式组成及编写方法的了解程度。继而衍生出正则表达式的作用:

1.分割

分隔符(定界符),主要是正斜线(/),表示一个正则表达式的开始和结束

2.查找

通用原子

\d :十进制0-9

\D :除了十进制0-9

\w:数字、字母、下划线

\W:除了数字、字母、下划线

\s:空白符(换行、空格、回车)

\S:除了空白符(换行、空格、回车)

元字符

模式修正符

U:懒惰模式

u:贪婪模式

i:忽略英文字母大小写

x:忽略空白

s:让元字符“.”匹配包括换行符在内所有字符

e:配合函数 preg_replace() 使用,可以把匹配来的字符串当作正则表达式执行

3.匹配

preg_match() //匹配一个

preg_match_all()// 匹配所有

4.替换

preg_replace()

preg_filler()

后向引用

在后面的表达式中,引用前面某个分组所匹配到的内容

<?php
/**
* Created by 冷月小白.
* 微信公众号: 学长冷月
*/ $str = '<b>abc</b>';
$pattern = '/<b>(.*)<\/b>/'; //一定要用括号
$res = preg_replace($pattern,'\1',$str); //将第一个匹配到的数据放入数组
var_dump($res); //string(3) "abc"

贪婪模式

<?php
/**
* Created by 冷月小白.
* 微信公众号: 学长冷月
*/ $str = '<b>abc</b><b>bcd</b>';
$pattern = '/<b>(.*?)<\/b>/u'; //贪婪模式
$res = preg_replace($pattern,'\1',$str); //将第一个匹配到的数据放入数组
var_dump($res); //string(3) "abc"

中文匹配

UTF-8汉字编码范围:

0x4e00-0x9fa5

一网打尽

请写出一个正则表达式,取出页面中所有的img标签中的src值

答案:

<?php
/**
* Created by 冷月小白.
* 微信公众号: 学长冷月
*/ $str = '<img alt="" id="" src="xxx.jpg" />';
$pattern = '/<img.*?src="(.*?)".*?\/?>/i';
preg_match($pattern,$str,$a);
var_dump($a);//string(7) "xxx.jpg"

如果这篇博文有帮助到您,可以帮冷月点一个赞或者加一个关注哦!

欢迎关注我的公众号:学长冷月,获得独家整理的学习资源和日常干货推送。

如果您对我的专题内容感兴趣,也可以关注我的博客:guoyu7.com

php面试笔记(6)-php基础知识-正则表达式考点的更多相关文章

  1. Java 面试知识点解析(一)——基础知识篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  2. 【Java面试】1、基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...

  3. MySQL必知必会笔记——查询的基础知识

    查询基础知识 第七章 数据过滤 组合where子句 MySQL允许给出多个WHERE子句.这些子 句可以两种方式使用:以AND子句的方式或OR子句的方式使用. AND操作符 可使用AND操作符给WHE ...

  4. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  5. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  6. Spring笔记01(基础知识)

    1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...

  7. [terry笔记]data guard基础知识

    如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...

  8. Java 8实战之读书笔记二:基础知识

    好记性不如烂笔头,整理一些个人觉得比较重要的东西. 一.基础知识 第1章 为什么要关心Java 8 Java 8提供了一个新的API(称为"流", Stream),它支持许多处理数 ...

  9. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

随机推荐

  1. 创建dynamics CRM client-side (八) - 获取attribute的值 和 设置disable

    大家可以用下面的方式来获取attribute的值 formContext.getAttribute("address1_shippingmethodcode").getText() ...

  2. Shiro Web集成及拦截器机制(四)

    Shiro与 Web 集成 Shiro 提供了与 Web 集成的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的 URL,然后进行相应的控制,ShiroFilter 类似于如 Str ...

  3. Informatica9.5.1创建资源库出错找不到libpmora8.so

    错误信息: Database driver event...Error occurred loading library [libclntsh.so.10.1: cannot open shared ...

  4. 一文教你一次性完成Helm 3迁移

    2019年,Kubernetes软件包管理器--Helm发布了最新版本Helm 3,并且该版本已经stable.Helm 3中的一些关键特性我们在之前的文章中已经介绍过,其中一些功能吸引了许多开发人员 ...

  5. LeetCode 200. Number of Islands 岛屿数量(C++/Java)

    题目: Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is s ...

  6. Windows API 教程(九) 网络编程

    茵蒂克丝 基础概念 ip 地址 服务端与客户端 Socket 基础概念 头文件和库文件 常用函数 WSAStartup ( ) 函数 WSACleanup ( ) 函数 Socket ( ) 函数 c ...

  7. Codeforces_801

    A.直接暴力就行了,先把能组合的按线性组合掉,再枚举剩下相邻没用过的. #include<bits/stdc++.h> using namespace std; string s; ] = ...

  8. Codeforces_733_D

    http://codeforces.com/problemset/problem/733/D 先给边排序,然后按3条边排序,只要判断相邻是否能组成长方体. #include<iostream&g ...

  9. HDU_1176_DP

    http://acm.hdu.edu.cn/showproblem.php?pid=1176 简单dp,转换后跟上一题数塔一样,注意每秒只能移动一格,还有在边缘的情况. #include<ios ...

  10. DOCKER 学习笔记9 Kubernetes (K8s) 生产级容器编排 上

    前言 在上一节的学习中.我们已经可以通过最基本的 Docker Swarm 创建集群,然后在集群里面加入我们需要运行的任务 以及任务的数量 这样我们就创建了一个服务. 当然,这样的方式在我们本地虚拟机 ...