SQL注入基础五--PHP正则表达式

什么是正则表达式

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

正则表达式的特点是:

  1. 灵活性、逻辑性和功能性非常强;
  2. 可以迅速地用极简单的方式达到字符串的复制控制;
  3. 对于刚接触的人来说,比较难懂

正则表达式的用途:

  1. 判断字符串是否合某一规则(判断是否合手机号、邮箱规则)
  2. 从一个字符串中找出符合规则的所有子字符串(取HTML标签名)

正则表达式的语法

关键字:

$  ()  *  +  .  [,]  ^  {,}  |

单个普通字符:

  1. 能使用键盘打出的全部字符(除关键字外)
A能匹配a  $不能匹配$  $能匹配$

特定的字符无法使用键盘输入比如:

字符 ASSIC码 转义字符 空 0x00 x00 删除符 0x08 或x08 制表符 0x08 或0x09 换行符 0x0b 或x0b 回车符 0x0d 或x0d
  1. 使用x00格式表示所有的ASSIC字符
  2. 使用u0000格式表示所有的Unicode字符(包括汉字)

常用转义字符:

值 字符 数字 d 非数字 D 空白字符(空格、制表符、换页符等) s 非空白字符 S 制表符 回车符 换行符 单词字符(26个英文字母+数字+下划线_) w 非单词字符 W

PHP中常见的正则表达式

自定义字符结合: 字符集合:[单个字符或字符区间],用于匹配集合内字符,如:

    [a-z]表示这26个小写字母 [0-9a-z]表示0-9这10个数字和a-z这26个小写字母 [135a-h]表示包含数据1,3,5和字母a-h这8个字母 注意:两个不同字符段间请勿使用,隔开。 非集:[^单个字符或字符区间],用于匹配非集合内字符。如: [^0-9]表示匹配所有非数字字符。 [^a-zA-Z]表示匹配所有非字母字符。

多个正则表达式匹配:

限定符: 常用函数:

preg_match()

匹配第一个匹配正则的子子字符串,未找到返回0,找到返回1

ereg()和eregi()

判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false

preg_gerp()

-匹配第一个匹配的子字符串数组,包含匹配的字符串和匹配的单元

preg_match_all()

功能和perg_match()类似区别在于能匹配所有子串,返回子串数量

preg_replace()

将所有匹配正则的字符串进行替换

preg_split(),split和spliti()

使用正则表达式分割字符串

正则表达式测试方法:

  1. 打开
  2. 百度关键字 正则表达式测试
  3. 使用各类编程语言、脚本等测试

常见场景

收集手机号码段 编写程序匹配是否为手机号 编写程序区分手机号运营商

经验分享 程序员 微信小程序 职场和发展