详解 正则表达式

文章目录

      • 一、概念
      • 二、作用
      • 三、语法规则
        • 3.1定义规则
        • 3.2符号简介
        • 3.3preg_match用法详解
        • 3.4详解元字符
          • 3.4.1 \d和[0-9]
          • 3.4.2 \D和[^0-9]
          • 3.4.3^和$
          • 3.4.4*代表出现0次或者多次
          • 3.4.5+代表出现1次或者多次
          • 3.4.5?代表出现0次或者1次
          • 3.4.6{n}
          • 3.4.7{n,}
          • 3.4.8{n,m}
          • 3.4.9点号(.)
          • 3.5.0 x|y
          • 3.5.1 [xyz]
          • 3.5.2 [^xyz]
          • 3.5.3\b
          • 3.5.4\s
        • 3.5练习
          • 3.5.1手机号验证案例
          • 3.5.2用户名验证案例
          • 3.5.3邮箱验证
      • 四、高级运用
        • 4.1反向引用
        • 4.2贪婪模式
        • 4.3禁止贪婪模式
        • 4.4禁止贪婪模式案例

一、概念

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二、作用

实际当中主要用于下面几个方面:
1、注册页面判断用户输入的内容是否符合验证规则
2、从整体字符串中看是否包含指定的字符串
3、找到符合规则的字符串进行替换

三、语法规则

3.1定义规则

在这里插入图片描述

3.2符号简介

正则表达式可以有普通符号和元字符组成。

普通字符如下:
‘/a/’代表你就要匹配字符a
‘/a7/’代表你就要匹配字符a7

元字符:
是具有特殊意义的符号
‘/\d/’ 代表要找寻数字

匹配的方法:
preg_match(reg,reg,reg,str,[$arr]);
$reg就是自己定义的正则表达式
$str是自己要查询的字符串
$arr是匹配到的结果

在这里插入图片描述

下面是各种符号的用法:
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

3.3preg_match用法详解

preg_match()只要找到一次符合正则表达式的结果就终止了,不会再往下匹配
在这里插入图片描述

preg_match_all()是匹配一次成功以后不会终止,会一直匹配到完
在这里插入图片描述

\d和[0-9]是一个意思
在这里插入图片描述

3.4详解元字符

3.4.1 \d和[0-9]

代表数字 参照上面

3.4.2 \D和[^0-9]

\D代表非数字和[^0-9]是一个意思
在这里插入图片描述

^在中括号中代表非
在这里插入图片描述

3.4.3^和$

^如果直接放在定界符前面代表以。。。开头
在这里插入图片描述

$代表以。。。。结尾
在这里插入图片描述

3.4.4*代表出现0次或者多次

zo*能匹配“z”以及“zoo”。*等价于{0,}。
在这里插入图片描述

3.4.5+代表出现1次或者多次

zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
在这里插入图片描述

3.4.5?代表出现0次或者1次

“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
在这里插入图片描述

3.4.6{n}

{n}代表固定出现n次
“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
在这里插入图片描述

3.4.7{n,}

{n,}代表最少出现n次,多者不限

o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”
在这里插入图片描述

3.4.8{n,m}

{n,m}代表最少出现n次,最多出现m次

“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格
在这里插入图片描述

3.4.9点号(.)

表示匹配除了\n(换行符以外的任意单个字符)

在这里插入图片描述

如果要表示真正的点号必须用.

在这里插入图片描述

3.5.0 x|y

竖线代表是或者的意思
在这里插入图片描述

3.5.1 [xyz]

[xyz]点匹配xyz中的任意一个字符

在这里插入图片描述

3.5.2 [^xyz]

[^xyz]代表除了x y z以外的任意单个字符

在这里插入图片描述

3.5.3\b

\b代表匹配单词的边界
在这里插入图片描述

如果是如下什么也匹配不到

在这里插入图片描述

3.5.4\s

\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

在这里插入图片描述

3.5练习

自己一个正则表达式,验证手机号11位 都是数字

3.5.1手机号验证案例

在这里插入图片描述

3.5.2用户名验证案例

用户名可以是数字 字母 下划线 中横线 个数是3-8位
在这里插入图片描述

在这里插入图片描述

3.5.3邮箱验证

在这里插入图片描述

四、高级运用

4.1反向引用

在正则表达式中出现小括号,是把小阔号中的内容当做子单元来使用
在这里插入图片描述

示例:
比如:你的字符串$str=‘aaaahttp://www.baidu.comdddd’;
然后你把里面的网址匹配出来替换成一个a标签

preg_replace(正则表达式,替换成什么,源字符串)
在这里插入图片描述

4.2贪婪模式

正则表达式里会尽可能多的匹配的元素
在这里插入图片描述

4.3禁止贪婪模式

让正则表达式尽可能少的匹配结果
在这里插入图片描述

在这里插入图片描述

4.4禁止贪婪模式案例

如果我们这样写会尽可能多的匹配
在这里插入图片描述

我们让它尽可能少的匹配

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java:控制台输入车辆信息,将信息保存至数据库中

程序功能:控制台输入车辆信息,将信息保存至数据库中 程序代码如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;i…

echars 3D地图为区域自定义颜色

echars 3D地图为区域自定义颜色问题延伸解决问题问题 根据项目需求,我们要将下面省级地图中的个别市进行高亮(不同颜色)展示 延伸 首先跟大家介绍这个地图的展示方式: 采用的是Vue框架中运用echarts地图采用的是geo3D和scatt…

linux每日命令(31):tar命令

阅读目录(Content) 一.命令格式二. 命令功能三. 命令参数必要参数选择参数四. 常见解压、压缩命令tar.gz.tar.gz 和 .tgz.bz2.tar.bz2.bz.tar.bz.Z.tar.Z.zip.rar五. 使用实例1:将文件全部打包成tar包2:查阅上述 tar包内有哪些文件3&#xff…

一文带你吃透BFC

文章目录面试高出场率什么是BFC触发BFC的条件BFC的约束规则BFC可以解决的问题面试高出场率 在前端的面试中,经常会遇到BFC的问题,比如:说说你对BFC的理解、你在项目中运用到的BFC、BFC是什么、BFC的作用是什么。。。。 很多同学很懵逼&…

基于Python语言使用RabbitMQ消息队列(一)

介绍 RabbitMQ 是一个消息中间人(broker): 它接收并且发送消息. 你可以把它想象成一个邮局: 当你把想要寄出的信放到邮筒里时, 你可以确定邮递员会把信件送到收信人那里. 在这个比喻中, RabbitMQ 就是一个邮筒, 同时也是邮局和邮递员 . 和邮局的主要不同…

爆赞程序猿开发软件

VSCode 使用 IntelliSense 超越语法突出显示和自动完成,它提供基于变量类型、函数定义和导入模块的智能完成 直接从编辑器调试代码。启动或附加到您正在运行的应用程序并使用断点、调用堆栈和交互式控制台进行调试 与 Git 和其他 SCM 提供商合作从未如此简单。查…

如果你在北京失业了,别怕,记得去领这笔钱!最少2034元/月!

人在江湖飘,哪能不挨刀 公司倒闭,老板走人,公司裁人 …… 就要被迫失业了 别怕! 如果你在北京失业了 记得去领这笔钱——失业保险金 每月最多有2143元 虽然钱不多,但能解燃眉之急 帮助你度过困难日子 重点全程网上就能…

真实诠释程序员日常的二十四张图【你中了几个】

当你打开遗留代码时 扒下来项目后改了一行代码…… 程序员调试css样式的时候 当你的try catch 不起作用 产品经理对你说要兼容IE 没有ui给你提供大小设计的结果 没吃透需求直接开发的你 程序员修复bug的真实处境 当你开始使用库,但忘记阅读文档 产品经理告诉你这只是…

Git学习原版手稿

手稿诞生记 Git学习的时候难免会有遗忘然后往复学习查看的过程,所以就形成了这个学习的手稿,记录了Git使用过程中的大部分命令,今天在清理的时候偶然看到了这些记录,而且最近也在写Git的使用教程,大致的学习线路也是按…

程序员首选编程电脑【火爆来袭】

作为一名程序员肯定会常用到一些编程软件,所以需要设备的配置参数上不能太差,不仅是要以稳定强大输出为基本,内存、音响、续航等方面也不可或缺。 直奔主题 如果你手里资金到位,那必须整一步到位——MacBook 对于这款大佬型笔记本…

201671010456-张琼 实验十四 团队项目评审课程学习总结

博文简要信息表 项目内容这个作业属于哪个课程http://www.cnblogs.com/nwnu-daizh/这个作业的要求在哪里https://www.cnblogs.com/nwnu-daizh/p/11093584.html课程学习目标掌握软件项目评审会流程,反思总结课程学习内容。任务一 验收意见表GitHub仓库地址https://gi…

强大的APIClound云修复——告别繁琐的编译打包流程

小编接到一项目的二期开发任务,拉下代码开始熟悉大概的框架、技术、上线流程等前期工作,本app是通过vue技术进行开发,使用ui是 vant 库,打包上线则是使用的 APIClound 平台; 在我们的app上线后,如果我们改…

研究下贝塞尔曲线

今天研究了下贝塞尔曲线,感觉还是很有价值的。 这里贝塞尔曲线是几个用法: 1.模拟曲线拟合。将折线找一个平滑的方案获得曲线的效果。联想可以获知,可以作为工程设计的一种方式。 2.模拟抛物线和实际场景中的一些物理特性,即物理上…

你对ES6究竟了解多少?—— 有这一篇就够用了

1. ES6相关概念(★★) 1.1 什么是ES6 ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。ES6 是ES2015以后的泛称 1.2 为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScrip…

科创板基础知识

交易制度 1、上市前5个交易日不设将跌幅限制;其后涨跌幅限制为 20%; 2、单笔申报不小于 200股。 参考资料: 科创板图文解读 科创板投教长图文系列(四):详解科创板股票交易的特别规定 上交所投教&#xff1a…

0_0 保留字

引自《 JavaScript 权威指南》2.4 / P28 ~ 29 保留字 部分 保留字 JavaScript 把一些标识符拿出来用作自己的关键字。因此,就不能再在程序中把这些关键字用作标识符了: 保留字 Part1.txt123456breakdelete functionreturntypeofcasedoifswitchvarc…

JavaScript 高级——详谈面向对象

1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.2面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。…

UVa202Repeating Decimals (循环小数)

解答&#xff1a; 因为除数是固定的&#xff0c;所以只要判断被除数是否出现过即可。 #include<iostream> #include <cstdio> #include <cstring> using namespace std; int m,n,vis[5000],res[5000],temp[5000],num,t,x; int main() {while(scanf("%d%…

构造函数、原型、继承原来这么简单?来吧,深入浅出

构造函数 小编上篇博客中介绍到的通过关键字class方式定义类&#xff0c;然后根据类再创建对象的方式&#xff0c;是ES6中语法&#xff0c;现在很多浏览器对ES6的支持还不是很好&#xff0c;所以也要学习通过构造函数&#xff08;构建函数&#xff09;的方式创建对象 问&…

[网络流24题] 航空路线问题 (费用流)

洛谷传送门 LOJ传送门 这道题的图还挺好想的吧 反正都是无向边&#xff0c;起点走到终点再回到起点&#xff0c;就相当于从起点走$2$次到达终点&#xff0c;且这两次不经过相同的点&#xff0c;还要经过尽可能多的点 很经典的费用流建图 限制点通过次数->拆点连边&#xff0…