PHP快速入门09-正则相关,附一定要学会的20个高频使用案例

news2024/10/6 6:40:04

文章目录

  • 前言
  • 一、正则表达式介绍
  • 二、正则高频案例20个
    • 2.1 检查字符串是否以字母开头
    • 2.2 检查字符串是否以数字开头
    • 2.3 检查字符串是否包含特定字符
    • 2.4 检查字符串是否以特定字符结尾
    • 2.5 检查字符串是否为纯数字
    • 2.6 检查字符串是否为纯字母
    • 2.7 检查字符串是否为有效的电子邮件地址
    • 2.8 检查字符串是否为有效的 URL
    • 2.9 检查字符串是否为有效的 IP 地址
    • 2.10 检查字符串是否为有效的日期格式
    • 2.11 检查字符串是否为有效的时间格式
    • 2.12 检查字符串是否为有效的电话号码
    • 2.13 检查字符串是否包含至少一个字母和一个数字
    • 2.14 检查字符串是否为有效的邮政编码
    • 2.15 检查字符串是否为有效的货币格式
    • 2.16 检查字符串是否包含至少一个大写字母和一个小写字母
    • 2.17 检查字符串是否为有效的车牌号码
    • 2.18 检查字符串是否为有效的身份证号码
    • 2.19 检查字符串是否包含至少一个非字母和数字字符
    • 2.20 检查字符串是否为有效的 HTML 标签
  • 总结


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战

在这里插入图片描述

一、正则表达式介绍

正则表达式(Regular Expression)是一种字符序列,用于描述一组字符串匹配某个模式或格式。

它由一些特殊的字符和普通字符组成,可以表示一些特定的文本模式,如手机号码、邮箱、网址等等。正则表达式在很多程序设计语言中都得到了广泛应用,如Python、Java、C++等等。合理的使用正则表达式往往会使我们的效率事半功倍。

常用的正则表达式元字符包括:

  • ^:表示匹配字符的开头。
  • $:表示匹配字符的结尾。
  • *:表示匹配前面的字符出现任意次数。
  • +:表示匹配前面的字符出现至少一次。
  • ?:表示匹配前面的字符出现零次或一次。
  • .:表示匹配任意一个字符。
  • []:表示匹配方括号内的某个字符。
  • ():表示将其中的表达式作为一个整体来匹配。

例如,使用正则表达式“\d{11}”可以匹配11位的数字串,即手机号码。

正则表达式虽然非常强大,但也有其缺点,即复杂度较高,难以阅读和维护,因此需要慎重使用。

二、正则高频案例20个

在编程中,正则表达式经常被用来处理文本数据,如验证用户输入、搜索字符串、替换文本等。

以下是使用 PHP 编写的 20 个正则表达式示例:

2.1 检查字符串是否以字母开头

if (preg_match('/^[a-zA-Z]/', $string)) {
    echo "First character is a letter";
} else {
    echo "First character is not a letter";
}

2.2 检查字符串是否以数字开头

if (preg_match('/^[0-9]/', $string)) {
    echo "First character is a number";
} else {
    echo "First character is not a number";
}

2.3 检查字符串是否包含特定字符

if (preg_match('/[aeiou]/', $string)) {
    echo "String contains a vowel";
} else {
    echo "String does not contain a vowel";
}

2.4 检查字符串是否以特定字符结尾

if (preg_match('/[.]$/', $string)) {
    echo "String ends with a period";
} else {
    echo "String does not end with a period";
}

2.5 检查字符串是否为纯数字

if (preg_match('/^[0-9]+$/', $string)) {
    echo "String is all digits";
} else {
    echo "String is not all digits";
}

2.6 检查字符串是否为纯字母

if (preg_match('/^[a-zA-Z]+$/', $string)) {
    echo "String is all letters";
} else {
    echo "String is not all letters";
}

2.7 检查字符串是否为有效的电子邮件地址

if (preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', $string)) {
    echo "String is a valid email";
} else {
    echo "String is not a valid email";
}

2.8 检查字符串是否为有效的 URL

if (preg_match('/^(http|https):\/\/[a-z0-9\-]+\.[a-z0-9\-]+(\/[a-z0-9\-._~:?#\[\]@!$&\'()*+,;=%]*)?$/i', $string)) {
    echo "String is a valid URL";
} else {
    echo "String is not a valid URL";
}

2.9 检查字符串是否为有效的 IP 地址

if (preg_match('/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/', $string)) {
    echo "String is a valid IP address";
} else {
    echo "String is not a valid IP address";
}

2.10 检查字符串是否为有效的日期格式

if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $string)) {
    echo "String is a valid date";
} else {
    echo "String is not a valid date";
}

2.11 检查字符串是否为有效的时间格式

if (preg_match('/^(0?[1-9]|1[0-2]):[0-5][0-9] (am|pm)$/i', $string)) {
    echo "String is a valid time";
} else {
    echo "String is not a valid time";
}

2.12 检查字符串是否为有效的电话号码

if (preg_match('/^\+?\d{1,3}?[- .]?\(?\d{3}\)?[- .]?\d{3}[- .]?\d{4}$/', $string)) {
    echo "String is a valid phone number";
} else {
    echo "String is not a valid phone number";
}

2.13 检查字符串是否包含至少一个字母和一个数字

if (preg_match('/(?=.*[a-zA-Z])(?=.*[0-9])/', $string)) {
    echo "String contains at least one letter and one number";
} else {
    echo "String does not contain at least one letter and one number";
}

2.14 检查字符串是否为有效的邮政编码

if (preg_match('/^\d{5}-\d{4}|\d{5}|[A-Z]\d[A-Z] \d[A-Z]\d$/', $string)) {
    echo "String is a valid postal code";
} else {
    echo "String is not a valid postal code";
}

2.15 检查字符串是否为有效的货币格式

if (preg_match('/^\$?\d+(\.\d{1,2})?$/', $string)) {
    echo "String is a valid currency";
} else {
    echo "String is not a valid currency";
}

2.16 检查字符串是否包含至少一个大写字母和一个小写字母

if (preg_match('/(?=.*[a-z])(?=.*[A-Z])/', $string)) {
    echo "String contains at least one lower case letter and one upper case letter";
} else {
    echo "String does not contain at least one lower case letter and one upper case letter";
}

2.17 检查字符串是否为有效的车牌号码

if (preg_match('/^(京|津|沪|渝|冀|豫|云|辽|黑|湘|皖|鲁|新|苏|浙|赣|鄂|桂|甘|晋|蒙|陕|吉|闽|贵|粤|青|藏|川|宁|琼)([A-HJ-NP-Z])([A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1})$/', $string)) {
    echo "String is a valid license plate number";
} else {
    echo "String is not a valid license plate number";
}

2.18 检查字符串是否为有效的身份证号码

if (preg_match('/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX]$/', $string)) {
    echo "String is a valid ID card number";
} else {
    echo "String is not a valid ID card number";
}

2.19 检查字符串是否包含至少一个非字母和数字字符

if (preg_match('/\W/', $string)) {
    echo "String contains at least one non-letter and non-number character";
} else {
    echo "String does not contain at least one non-letter and non-number character";
}

2.20 检查字符串是否为有效的 HTML 标签

if (preg_match('/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/', $string)) {
    echo "String is a valid HTML tag";
} else {
    echo "String is not a valid HTML tag";
}

总结

以上就是关于本篇文章介绍的内容,正则相关,附一定要学会的20个高频使用案例,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。

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

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

相关文章

Bean对象的作用域和生命周期

文章目录&#xff1a;一.Bean的作用域 (1)Bean作用域的含义 &#xff08;2)Bean的6种作用域 二.Bean的生命周期&#xff08;1&#xff09;开辟内存空间 &#xff08;2&#xff09; 属性注入 &#xff08;3&#xff09;初始化 &#xff08;4&#xff09;使用Bean &#xff08;…

【CSDN|每日一练】运输石油

目录 运行结果题目描述输入描述:输出描述:示例代码结语运行结果 题目描述 某石油公司需要向A、B两地运输石油。 两地的需求量不同,而一辆车只能装载一定量的石油。 经过计算A地需要a辆车,B地需要b辆车运输才能满足需求。 现在一共有n辆车分布在各地,每辆车前往A、B两地…

HFSS一些使用技巧总结

1. 快捷键&#xff1a; CTRLH&#xff0c;隐藏选择的object、face 字母E&#xff0c;选择edge&#xff08;线&#xff09; alt左键双击九个区域&#xff0c;切换9个不同的视角&#xff08;与789组合使用) 2. 复制&#xff1a; 这样的复制好处在于&#xff1a;复制完的物体相…

使用Excel打造一款个人日志系统

写在前面 我很多年前看过晨间日志的奇迹这一本书&#xff0c;我深受启发&#xff0c;这本书的中心思想就是通过九宫格的方式写连体日志&#xff0c;自己可以方便查找而有而且有激情去完成这个日志&#xff0c;书中推荐的方法是使用excel写日志。但是自己总感觉用excel过于麻烦…

Java 源码中的 <? extends U>与 <? super L>是什么?

目录 ? extends U ? super L 总结一下: ? extends U 其中extends意思为&#xff1a;扩大;扩展;延长&#xff0c;&#xff1f;我们可以把他看作一个通配符&#xff0c;匹配所有的接口&#xff0c;U就一个泛型占位符&#xff0c;所以连在一起可联想到&#xff0c;从U…

前后端分离下的-SpringSecurity

前后端分离下的SpringSecurity 项目创建 使用SpringBoot初始化器创建SpringBoot项目 修改项目依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2…

电容笔和Apple pencil的区别是什么?好用电容笔推荐

Apple Pencil与目前市场上常见的电容笔最大的不同之处在于&#xff0c;普通电容笔并不具备苹果Pencil特有的重力压感&#xff0c;而仅仅是一种倾斜的压感。不过&#xff0c;其在其它方面的表现也很出色&#xff0c;与Apple Pencil相似&#xff0c;而且价格仅为200元。现在&…

项目管理中的冲突是什么?

项目管理中的冲突可以采取多种不同的形式。团队成员在创意愿景上存在分歧&#xff0c;与高层管理人员就期望和时间表发生争执&#xff0c;甚至与第三方供应商发生争执&#xff0c;都是项目冲突的主要例子。 冲突的常见原因是什么&#xff1f; 基于项目的组织内部冲突的典型原因…

【记录】Git连接gitee、新建仓库

学习记录1.连接gitee2.新建仓库1.连接gitee https://www.cnblogs.com/cokefentas/p/14727592.html git安装与卸载 apt-get install git apt-get remove gitgit配置 配置用户名 git config --global user.name "your name" 配置邮箱 git config --global user.email…

2023都说测试行业饱和了,为什么我们公司新招的的测试开了15K?

其实每年都有人说测试行业饱和了&#xff0c;但依旧有很多人找到了薪资不错的工作。来说说我的看法吧&#xff0c;我认为不用担心测试会饱和的问题&#xff0c;我们人口基数大&#xff0c;任何一个行业都有竞争&#xff0c;这是非常正常的情况。而且在有技术能力的人面前永远没…

Vue3通透教程【十一】初探TypeScript

文章目录&#x1f31f; 写在前面&#x1f31f; TypeScript是什么&#xff1f;&#x1f31f;TypeScript 增加了什么&#xff1f;&#x1f31f;TypeScript 初体验&#x1f31f; 写在最后&#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue …

什么是进程,线程,协程

一.进程1.简介计算机的核心是CPU&#xff0c;它承担了所有的计算任务&#xff1b;而操作系统是计算机的管理者&#xff0c;它负责任务的调度、资源的分配和管理&#xff0c;统领整个计算机硬件&#xff1b;应用程序则是具有某种功能的程序&#xff0c;程序是运行于操作系统之上…

十分钟验证一个轻量化车联网解决方案

智能网联汽车在车联网的应用上&#xff0c;通常是以智能传感器、物联网、GIS技术为基础&#xff0c;结合大数据、人工智能技术&#xff0c;通过OT&#xff08;Operation tecnology&#xff09;和IT&#xff08;information tecnology&#xff09;融合的方式&#xff0c;实现智能…

使用Ubuntu22.04搭建k8s环境和一些k8s基础知识

minikube搭建 基本环境 我使用virtualBox构建的ubuntu&#xff0c;选择4核4G内存minikube是一个K8S集群模拟器&#xff0c;可以快速构建一个单节点的集群&#xff0c;用于在本地测试和开发首先使用官方脚本安装docker curl -fsSL https://test.docker.com -o test-docker.sh…

nacos源码服务注册

nacos服务注册序言1.源码环境搭建1.1idea运行源码1.2 登录nacos2.服务注册分析2.1 客户端2.1.1容器启动监听2.1.2注册前初始化2.1.3注册服务2.2 服务端2.2.1注册2.2.2重试机制3.注意事项序言 本文章是分析的是nacos版本2.2 这次版本是一次重大升级优化&#xff0c;由原来&#…

【MySQL | 基础篇】02、MySQL 函数详解

目录 一、字符串函数 1.1 concat : 字符串拼接 1.2 lower : 全部转小写 1.3 upper : 全部转大写 1.4 lpad : 左填充 1.5 rpad : 右填充 1.6 trim : 去除空格 1.7 substring : 截取子字符串 1.8 案例 二、数值函数 2.1 ceil&#xff1a;向上取整 2.2 floor&#xff…

【Java版oj】day34收件人列表、养兔子

目录 一、收件人列表 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、养兔子 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、收件人列表 …

Python机器学习:支持向量机2

昨天是简单的了解了一下支持向量机要干什么以及线性可分支持向量机是怎么一回事&#xff0c;今年来看另一种&#xff1a;线性支持向量机&#xff1a; 我们昨天说的&#xff0c;线性可分支持向量机的目的就是找到一个超平面来吧一个数据集分成正负两个部分&#xff0c;但是实际…

一天学完C++的标准模板库STL

标准模板库STLstring字符串如何对string字符串的初始化&#xff08;声明&#xff09;&#xff1f;如何遍历string对象进行访问&#xff1f;如何对string类型的字符串进行增删改查&#xff1f;对string字符串增加一些字符对string字符串删除一些字符对string字符串改动一些字符在…

【hello Linux】环境变量

目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux&#x1f337; 在开始今天的内容之前&#xff0c;先来看一幅图片吧&#xff01; 不知道你们是否和我一…