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

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

@TOC


前言

本文已收录于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('/[.]{
   
   mathJaxContainer[0]}string)) {
   
   
    echo "String ends with a period";
} else {
   
   
    echo "String does not end with a period";
}

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

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

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

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

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

if (preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*{
   
   mathJaxContainer[3]}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]?){
   
   mathJaxContainer[5]}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}{
   
   mathJaxContainer[6]}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){
   
   mathJaxContainer[7]}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}{
   
   mathJaxContainer[8]}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{
   
   mathJaxContainer[9]}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}){
   
   mathJaxContainer[11]}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]{
   
   mathJaxContainer[12]}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+\/>){
   
   mathJaxContainer[13]}string)) {
   
   
    echo "String is a valid HTML tag";
} else {
   
   
    echo "String is not a valid HTML tag";
}

总结

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

相关文章
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
存储 程序员 PHP
老程序员分享:Php中正则小结(一)
老程序员分享:Php中正则小结(一)
106 0
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
323 6