PHP正则表达式入门教程(推荐)_php实例
思维导图
点击下图,可以看具体内容!
介绍
正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如javascript,java,.net,php等等,我今天就把我对正则表达式的理解跟大家唠唠,不当之处,请多多指教!
定位
我们什么时候使用正则表达式呢?不是所有的字符操作都用正则就好了,php在某些方面用正则反而影响效率。当我们遇到复杂文本数据的解析时候,用正则是比较好的选择。
优点
正则表达式在处理复杂字符操作的时候,可以提高工作效率,也在一定程度节省你的代码量。
缺点
我们在使用正则表达式的时候,复杂的正则表达式会加大代码的复杂度,让人很难理解。所以我们有的时候需要在正则表达式内部添加注释。
通用模式
¤ 定界符,通常使用 "/"做为定界符开始和结束,也可以使用"#"。
什么时候使用"#"呢?一般是在你的字符串中有很多"/"字符的时候,因为正则的时候这种字符需要转义,比如uri。
使用"/"定界符的代码如下.
$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i'; $str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
preg_match中的$matches[0]将包含与整个模式匹配的字符串。
使用"#"定界符的代码如下.这个时候对"/"就不转义!
$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i'; $str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
¤ 修饰符:用于改变正则表达式的行为。
我们看到的('/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html/i')中的最后一个"i"就是修饰符,表示忽略大小写,还有一个我们经常用到的是"x"表示忽略空格。
贡献代码:
$regex = '/HELLO/'; $str = 'hello word'; $matches = array(); if(preg_match($regex, $str, $matches)){ echo 'No i:Valid Successful!',"\n"; } if(preg_match($regex.'i', $str, $matches)){ echo 'YES i:Valid Successful!',"\n"; }
¤ 字符域:[\w]用方括号扩起来的部分就是字符域。
¤ 限定符:如[\w]{3,5}或者[\w]*或者[\w]+这些[\w]后面的符号都表示限定符。现介绍具体意义。
{3,5}表示3到5个字符。{3,}超过3个字符,{,5}最多5个,{3}三个字符。
* 表示0到多个
+ 表示1到多个。
¤ 脱字符号
^:
> 放在字符域(如:[^\w])中表示否定(不包括的意思)——“反向选择”
> 放在表达式之前,表示以当前这个字符开始。(/^n/i,表示以n开头)。
注意,我们经常管"\"叫"跳脱字符"。用于转义一些特殊符号,如".","/"
通配符(lookarounds):断言某些字符串中某些字符的存在与否!
lookarounds分两种:lookaheads(正向预查 ?=)和lookbehinds(反向预查?<=)。
> 格式:
正向预查:(?=) 相对应的 (?!)表示否定意思
反向预查:(?<=) 相对应的 (?
前后紧跟字符
$regex = '/(?<=c)d(?=e)/'; /* d 前面紧跟c, d 后面紧跟e*/ $str = 'abcdefgk'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
否定意义:
$regex = '/(?<!c)d(?!e)/'; /* d 前面不紧跟c, d 后面不紧跟e*/ $str = 'abcdefgk'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
>字符宽度:零
验证零字符代码
$regex = '/HE(?=L)LO/i'; $str = 'HELLO'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
打印不出结果!
$regex = '/HE(?=L)LLO/i'; $str = 'HELLO'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
能打印出结果!
说明:(?=L)意思是HE后面紧跟一个L字符。但是(?=L)本身不占字符,要与(L)区分,(L)本身占一个字符。
捕获数据
没有指明类型而进行的分组,将会被获取,供以后使用。
> 指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。
> 在同一个表达式内的引用叫做反向引用。
> 调用格式: \编号(如\1)。
$regex = '/^(Chuanshanjia)[\w\s!]+\1$/'; $str = 'Chuanshanjia thank Chuanshanjia'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
> 避免捕获数据
格式:(?:pattern)
优点:将使有效反向引用数量保持在最小,代码更加、清楚。
>命名捕获组
格式:(?P<组名>) 调用方式 (?P=组名)
$regex = '/(?P<author>chuanshanjia)[\s]Is[\s](?P=author)/i'; $str = 'author:chuanshanjia Is chuanshanjia'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
运行结果
惰性匹配(记住:会进行两部操作,请看下面的原理部分)
格式:限定符?
原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个。
先看下面的两个代码:
代码1.
<?php $regex = '/heL*/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
结果1.
代码2
<?php $regex = '/heL*?/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
结果2
代码3,使用“+”
<?php $regex = '/heL+?/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
结果3
代码4,使用{3,5}
<?php $regex = '/heL{3,10}?/i'; $str = 'heLLLLLLLLLLLLLLLL'; if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
结果4
正则表达式的注释
格式:(?# 注释内容)
用途:主要用于复杂的注释
贡献代码:是一个用于连接MYSQL数据库的正则表达式
$regex = '/ ^host=(?<!\.)([\d.]+)(?!\.) (?#主机地址) \| ([\w!@#$%^&*()_+\-]+) (?#用户名) \| ([\w!@#$%^&*()_+\-]+) (?#密码) (?!\|)$/ix'; $str = 'host=192.168.10.221|root|123456'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "\n";
特殊字符
特殊字符 | 解释 |
* | 0到多次 |
+ | 1到多次还可以写成{1,} |
? | 0或1次 |
. | 匹配除换行符外的所有单个的字符 |
\w | [a-zA-Z0-9_] |
\s | 空白字符(空格,换行符,回车符)[\t\n\r] |
\d | [0-9] |
以上所述是小编给大家介绍的PHP正则表达式入门教程的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP에서는 정규식을 사용하여 문자열이 비어 있는지 확인할 수 있습니다. 문자열이 비어 있는 경우는 다음과 같습니다. 문자열에 공백만 포함되어 있습니다. 문자열 길이는 0입니다. 문자열이 null이거나 정의되지 않았습니다. 다음으로, 이러한 상황을 검증하기 위해 PHP에서 정규식을 사용하는 방법을 다룰 것입니다. 정규식: s+ 이 정규식은 공백만 포함된 문자열을 일치시키는 데 사용할 수 있습니다. 그 중 s는 공백이 일치한다는 뜻이고, +는 하나 이상 일치한다는 뜻이다. 코드 예: functionisEmptySt

IPv6은 인터넷 통신에 사용되는 IP 주소 프로토콜인 InternetProtocolVersion6을 나타냅니다. IPv6 주소는 128비트로 구성된 숫자이며 일반적으로 8개의 16진수 그룹으로 표시됩니다. PHP에서는 정규식을 사용하여 입력이 IPv6 주소인지 확인할 수 있습니다. 다음은 PHP 정규식을 사용하여 IPv6 주소를 확인하는 방법입니다. 1단계: IPv6 주소 형식을 이해합니다. IPv6 주소는 각각 8개의 16진수 블록으로 구성됩니다.

웹 애플리케이션을 작성할 때 전화번호를 확인해야 하는 경우가 많습니다. PHP의 일반적인 방법은 정규식을 사용하여 전화번호가 올바른 형식인지 확인하는 것입니다. 정규식은 간결한 문장에서 특정 패턴을 식별하는 데 도움이 되는 강력한 도구입니다. 다음은 전화번호 형식의 유효성을 검사하기 위해 PHP에서 정규식을 사용하는 예입니다. 먼저 전화번호의 일반적인 형식을 정의해 보겠습니다. 전화번호에는 숫자, 괄호, 하이픈, 공백이 포함될 수 있습니다. 표준 전화번호는 10자리 숫자로 구성되어야 하며 앞에는

주민등록번호와 여권번호는 국민생활에 공통적으로 사용되는 문서번호이다. 이러한 문서 번호와 관련된 기능을 구현할 때 입력된 번호의 정확성을 확인하기 위해 형식 확인을 수행해야 하는 경우가 많습니다. PHP에서는 정규식을 사용하여 이 기능을 구현할 수 있습니다. 이 기사에서는 PHP 정규식을 사용하여 입력 문자열이 ID 번호 또는 여권 번호 형식인지 확인하는 방법을 소개합니다. 1. 신분증번호 확인 신분증번호는 18자리로 구성되며 마지막 자리는 문자(체크코드)로 가능하며 형식은 다음과 같습니다.

인터넷의 급속한 발전으로 인해 URL 주소는 사람들의 일상생활에서 없어서는 안 될 부분이 되었습니다. 웹 개발에서는 사용자가 입력한 URL 주소가 시스템에서 올바르게 인식되고 사용되도록 하기 위해 형식 검증을 수행해야 합니다. 이 기사에서는 PHP 정규식을 사용하여 URL 주소 형식을 확인하는 방법을 소개합니다. 1. URL 주소의 기본 구성 요소 URL 주소 형식을 확인하는 방법을 이해하기 전에 먼저 URL 주소의 기본 구성 요소를 이해해야 합니다. 일반적으로 표준 URL 주소는 다음과 같이 구성됩니다.

PHP에서 정규식은 일반적으로 사용되는 문자열 일치 및 유효성 검사 도구입니다. 개발 과정에서 입력 파일 경로가 올바른 형식인지 자주 확인해야 합니다. 이 기사에서는 정규식을 사용하여 문자열이 파일 경로인지 확인하는 방법을 소개합니다. 먼저 파일 경로의 기본 형식을 결정해야 합니다. Windows 시스템에서 일반적인 파일 경로는 "C:ProgramFilesPHPphp.exe"와 유사한 형식입니다. 경로는 다음 부분으로 구분됩니다.

웹 애플리케이션을 개발할 때 사용자 입력이 특정 형식 및 길이 요구 사항을 준수하는지 확인해야 하는 경우가 많습니다. PHP 정규식은 유효성 검사를 위한 강력한 방법을 제공합니다. 이 기사에서는 PHP 정규식을 사용하여 특정 길이의 입력을 검증하는 방법을 소개합니다. 입력 길이 요구 사항 결정 정규식 작성을 시작하기 전에 입력 길이 요구 사항을 결정해야 합니다. 예를 들어, 사용자에게 길이 8의 비밀번호를 입력하라는 메시지가 표시되면 정규식은 8자 이상의 문자열과 일치하는 대신 8자와 일치해야 합니다. 정규식 작성

널리 사용되는 서버 측 프로그래밍 언어인 PHP는 입력 데이터의 정확성을 확인하는 몇 가지 강력한 도구를 제공합니다. 이 기사에서는 정규식을 사용하여 입력이 IPv4 주소인지 확인하는 방법에 중점을 둘 것입니다. 먼저, IPv4 주소란 무엇입니까? IPv4 주소는 32비트 이진수를 의미하며, 일반적으로 "."로 구분된 4개의 8비트 이진수로 나누어 10진수 형식으로 표시됩니다. 예를 들어 127.0.0.1은 IPv4 주소입니다. 이제 정규식을 사용하여 다음을 수행하는 방법을 살펴보겠습니다.
