正则表达式

正则表达式

  正则表达式存在的意义:过滤和检索。

  正则表达式,又称规则表达式(Regular Expression )常简写为regexregexpRE;

常用正则表达式函数

  Preg\_match(\$pattern,\$subject,\$arr)
搜索subject在pattern给的正则表达式的匹配,返回匹配次数为0或1,存在arr数组中。

  Preg\_match\_all(\$mattern,\$str,\$arr):进行全局正则表达式的匹配,可多次匹配,返回共计匹配的次数存到arr数组。

  preg\_replace (正则表达式、替换成什么、匹配字符串)
返回替换后的结果

作用

  正则表达式通常被用来检索、替换符合规则的文本

特点

  • 灵活性、逻辑性和功能性强
  • 可以快速地用极简单的方式达到支付出的复杂控制

用途

  • 判断字符串是否符合某规则
  • 从一个字符串中找出符合规则的所以子字符串

常用字符

说明 符号
数字 \d
非字符 \D
空白字符(空格、制表符、换页符等) \s
非空白字符 \S
制表符 \t
回车符 \r
换行符 \n
单词字符(26个英文字母+数字+下划线) \w
非单词字符 \W

字符集合

1
2
3
4
字符集合:[ 单个字符或字符区间] ,用于匹配集合内字符
```bash
字符集合:[ 单个字符或字符区间] ,用于匹配集合内字符

  ‍

  如:

  • [a-z] 表示a-z 26个小写字母
  • [ 0-9a-h] 表示0-9 10个数字和a-z 8个字母
  • [134a-h] 表示包含数字1,3,5和字母a-h 8个字母

  注意:两个不同字符段间请勿使用逗号,隔开

反选字符

1
2
3
4
非集:[\^单个字符或区间],用于匹配非集合内字符]
```bash
非集:[\^单个字符或区间],用于匹配非集合内字符]

  ‍

  • 反选字符:^
  • [^] 注意:中括号内^ 才是反选
  • [^0-9] 表示匹配所有非数字字符
  • [^a-zA-Z] 表示匹配所有非字母字符

关键字

关键字 描述
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结尾位置
() 标记一个子表达式的开始和结束位置
* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
. 匹配除换行符\n之外的任意单个字符
[ 标记一个中括号表达式的开始
匹配前面的子表达式零次或一次
\ 将下一个字符标记为特殊字符原来的本意
{ 标记限定符表达式的开始
| 指明两项之间的一项

限定符

字符 描述
{n} n为非负数,匹配连续的字符n次
{n,} n为非负数,匹配连续的字符n次及以上
{n,m} n、m均为非负数,n<=m,匹配连续的字符 至少n次,至多m次

修饰符

  ‍

修饰符 描述
/i 不区分大小写
/A 匹配规则必须从头开始匹配
/s 将匹配一切字符
/X 正则表达式中的空白字符将会被忽略

  注意:写在正则表达式的“外面“ /a/i

函数

  PHP中使用正则表达式一定要加/ 正则表达式内容 /

  • preg\_match(正则表达式,匹配的字符串)
    匹配第一个匹配正则的子字符串,未找到返回0.找到返回1
  • preg\_grep()
    匹配第一个匹配正则的字符串数组,包含匹配的字符串和匹配的单元
  • preg\_match\_all(正则表达式,匹配的字符串,输出的二维数组)
    能匹配所有的子字符串,返回子字符串匹配的数量
  • pre\_replace(正则表达式,替换的字符串,匹配的字符串)
    将所有匹配正则表达式的字符串进行替换