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

news/2024/12/12 6:29:31/

文章目录

  • 前言
  • 一、正则表达式介绍
  • 二、正则高频案例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.ppmy.cn/news/47634.html

相关文章

C/C++每日一练(20230417)

目录 1. 字母异位词分组 &#x1f31f;&#x1f31f; 2. 计算右侧小于当前元素的个数 &#x1f31f;&#x1f31f;&#x1f31f; 3. 加一 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 J…

前端开发中性能优化之较少http请求(缓存策略)

1.实现减少http请求逻辑如下 定义了一个fetchData函数&#xff0c;用于发起HTTP请求并返回响应结果。函数的实现逻辑如下&#xff1a; 将请求参数对象params转换为字符串&#xff0c;作为缓存对象的键cacheKey。 如果缓存对象中已经有该请求参数对应的结果&#xff0c;直接返回…

实在智能获评十大数字经济风云企业,2022余杭数字经济“群英榜”发布

4月17日&#xff0c;经专家评审、公开投票&#xff0c;由中共杭州市余杭区委组织部&#xff08;区委两新工委&#xff09;、中共杭州市余杭区经济和信息化局委员会主办评选的2022年度余杭区数字经济“群英榜”正式公示。其中&#xff0c;实在智能成功获评十大数字经济风云企业之…

Linux 操作系统中应该掌握的知识

下面是我从业整理的一部分需要掌握的内容&#xff1a; 1. 基本命令行操作 基本命令行操作&#xff1a;包括文件管理、进程管理、用户权限等方面的基本命令行操作。 下面是文件管理、进程管理和用户权限相关的一些命令和内容&#xff1a; 1.1 文件管理 ls&#xff1a;显示当…

嵌入式Linux(5):物理地址到虚拟地址映射

文章目录 理论知识1、使能了MMU以后有什么好处呢&#xff1f;2、MMU非常复杂&#xff0c;那么我们如何完成物理地址到虚拟地址的转换呢&#xff1f;3、如何查看哪些物理地址被映射过了呢&#xff1f;实例(RK3568) 理论知识 在Linux上面如果想要操作硬件&#xff0c;需要先把物…

python基础复习

文章目录 **string**boolList元组set字典bytes类型f-string条件控制语句ifMatch...case python推导式列表推导式字典推导式元组推导式 迭代器传递参数面向对象类默认函数不定长函数 Lambda 时隔一年捡起来&#xff0c;通过Python3 基本数据类型 | 菜鸟教程 (runoob.com)速刷 st…

酷雷曼一站式图片直播,助力品牌高效传播

传统模式下&#xff0c;摄影师拍摄会议、活动现场的照片后&#xff0c;一般需要7-10天时间才能完成成片交付&#xff0c;而实际上&#xff0c;由于新闻宣传的即时性&#xff0c;照片延迟交付&#xff0c;远远不能满足客户的需求。因此&#xff0c;即时图片直播技术应运而生&…

ROS学习第十节——参数服务器

前言&#xff1a;本小节主要是对于参数服务器参数的修改&#xff0c;需要掌握操作参数的函数使用 1.基本介绍 参数服务器实现是最为简单的&#xff0c;该模型如下图所示,该模型中涉及到三个角色: ROS Master (管理者)Talker (参数设置者)Listener (参数调用者) ROS Master …