PHP—正则表达式

简介: PHP—正则表达式

什么是正则表达式?

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。



正则表达式的特点:

1. 灵活性、逻辑性和功能性非常强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

3. 对于刚接触的人来说,比较晦涩难懂



正则表达式用途

判断字符串是否符合某一规则(判断是否符合手机号、邮箱规则)。

从一个字符串中找出符合规则的所有子字符串(取HTML标签名)。


正则表达式的格式?

"/表达式/[修饰符]"




当使用正则表达式时要注意什么?

PHP中使用正则规则一定要加代表正则的标识


php中正则表达式常用相关函数是什么

Preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组)

该函数会返回匹配到的次数(可能是0),或者如果发生错误返回FALSE

preg_replace(正则表达式、替换成什么、匹配字符串)

该函数会返回替换后的结果



正则表达式的语法——字符(一)

数字:\d

非数字:\D

空白字符(空格、制表符、换页符等):\s

非空白字符:\S

单词字符(26个英文字母+数字+下划线):\w

非单词字符:\W



正则表达式的语法——字符(二)

字符集合:[单个字符或字符区间],用于匹配集合内字符

比如:

[a-z]表示a-z这26个小写字母

[0-9a-z]表示0-9这10个数字和a-z这26个小写字母

[123a-h]表示包含数字1,2,3和a-h这8个字母


注意:两个不同的字符段间一定不要用逗号隔开

非集合字符:[^单个字符或字符区间],用于匹配非集合内字符

比如:

[^0-9]表示匹配所有非数字字符

[^a-zA-Z]表示匹配所有非字母字符


字符集合的数字区间该注意什么?

数字区间正则只能匹配0-9的数字,因为正则只能一位一位的匹配,所以超过9以外的数字只是我们给的概念,对于正则机制来说它是认不到的,比如[100-120]就无法被匹配



正则表达式的语法——关键字

() 表示一个整体

^ 匹配输入字符串的开始位置

$ 匹配输入字符串的结尾位置

. 通配符,代表任意字符但不匹配换行

* 匹配0次或者多次

+ 匹配1次或者多次

\ 转义字符

| 两项之间的一个选择


转义字符“\”的使用

转义字符主要是将一些特殊字符转为普通字符。而这些常用特殊字符有”.”、”?”、”\”等

^和$结合使用的注意问题

如果^和$结合使用且中间没有其他表达式,那么他们中间就不能出现别的字符,不然无法匹配,比如/^3b$/表示3开头b结尾,所以只有3b才能被匹配,如果写了3acb就无法被匹配。什么情况下才能被匹配呢,可以使用.(通配符)。



非集合字符的“^”和关键字“^”的区别

非集合字符的“^”可理解为排除字符,排除操作,一般放在[]中,如[^1-5], 表示该字符不是1-5之间的数字;而关键字的“^”表示行开始,如"^ab"表示以ab开头的字符串。


正则表达式的语法——限定符

{n} 例如0{8} 表示只有连起来8个0才会被匹配

{n,} 例如0{2,} 表示只要2个0及其以上的就会被匹配

{n,m} 例如0{2,4} 表示最少匹配2个0,最多匹配4个0


注:被匹配时,默认匹配最多的次数

正则表达式的语法——修饰符



\i 表示不区分大小写

\A 匹配规则必须从头开始匹配

\s 表示.将匹配一切字符

\x 表示正则表达式中的空白字符会被忽略

\e 代码执行仅限preg_replace()


匹配模式的优先级是什么?(优先级从高到低排)

\转义字符;()[]大原子和原子表;*+?{n}{n,}{n,m}重复匹配(匹配次数);^$\b\B边界限制;|模式选择


下面是靶场题:

http://b-regex-1s.lab.aqlab.cn/?id=1

<?php  
$key='flag{********************************}'; 
$Regular= preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match); 
if( $Regular ){  
  die('key: '.$key); 



答案      /zkaq.*key.{2,9}:\/.*\/(key*key)/i

          /zkaq aa key qqq :/ bb / ke yy key

相关文章
|
4月前
|
JavaScript PHP
php正则表达式获取(捕获)组的笔记
@(汗)的确,网络上存在很多这样的内容了,但今天我是来补充内容的,滑稽@(你懂的) 众所周知 ,js中正则表达式()可以来获取匹配到内容,然后用$0 ...来显示
48 0
|
9月前
|
PHP
php正则表达式函数preg_replace替换span标签
php正则表达式函数preg_replace替换span标签
43 0
|
11月前
|
PHP Perl
PHP正则表达式
PHP正则表达式
|
PHP 数据安全/隐私保护
PHP实现简单的注册页面(正则表达式练习)
html实现简单的注册表单,然后使用php实现简单的数据验证(运用正则表达式)
173 0
PHP实现简单的注册页面(正则表达式练习)
|
Shell PHP Perl
实训项目:PHP正则表达式的应用
正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。 正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。
162 0
实训项目:PHP正则表达式的应用
PHP通过正则表达式对用户名合法性校验
PHP通过正则表达式对用户名合法性校验
165 0
PHP 正则表达式preg_match
PHP 正则表达式preg_match
|
PHP Python
Python、PHP:手机号匹配正则表达式
Python、PHP:手机号匹配正则表达式
148 0
Python、PHP:手机号匹配正则表达式
|
机器学习/深度学习 SQL PHP
PHP常用正则表达式大全
平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:
130 0
|
Web App开发 PHP
PHP正则表达式获取指定IP的物理地址
  网站常用的模块可能出了注册、登陆、发稿、留言、评论,剩下比较重要的也许就是获取IP并作相应的数据处理了。自己搭建IP数据库占资源,而且更新不便,何不使用现成的IP查询呢?下面自己写了个获取IP物理地址的PHP代码(有一定的瑕疵,请高手不吝赐教)Venus'Blog   DOCTYPE html>     这段代码采用访问http://www.ip138.com后使用正则表达式进行截取部分内容,Venus'Blog其中正则表达式是自己写的。
1289 0