MENU

PHP正则表达式

2018 年 05 月 11 日 • PHP阅读设置

正则表达式的作用

匹配,分割,查找,替换字符串

正则表达式分隔符

正斜线(/),hash符号(#),取反符号(~ )

通用原子

 \d(十进制0-9)
 \D(\d的取反)
 \w(数字,字母,下划线)
 \W(\w取反)
 \s(空白符)
 \S(\s取反)

元字符

. (除了换行符以外的任意字符)
* (匹配前面的内容和,出现0次1次或者多次)
 ? (出现0次或者1次)
 ^(以它开头)
 $(以它结尾)
 +(出现一次或者多次)
 {n}恰巧出现n次
 {n,}出现大于等于n次
 {n,m} n<=次数<=m
 [](一个集合如[abc]就是匹配a或b或c)
 ()(互相引用,或者代表一个整体)
 [^](取反如[^abc]除了a,b,c)
 |(或者)
 [-](范围[0-9]代表匹配0-9)

修正模式

 i 不区分大小写
 m 将字符串的每一行分别进行匹配
 e 对匹配的结果做PHP语法处理
 s 将字符串视为单行,换行符作为普通字符.
 U 取消贪婪模式
 x 将模式中的空白忽略.
 A 强制仅从目标字符串的开头开始匹配.
 D 模式中的美元元字符仅匹配目标字符串的结尾.
 u utf-8中文匹配

后向引用

示例:匹配中的内容
1.png

贪婪模式

示例:使用.*?取消贪婪模式
2.png

正则表达式常用函数

3.png

示例

示例1:匹配以139开头的11位手机号

<?php
//匹配139开头的11位手机号码
$str = '13988888888';
$pattern = '/^139\d{8}$/';
preg_match($pattern,$str,$match);
var_dump($match);

运行结果:

array(1) {
  [0]=>
  string(11) "13988888888"
}

示例2:匹配img标签中的所有src属性

<?php
//匹配所有img标签中的src属性
$str = '<img alt = "撒旦阿萨德" id = "11" class = "image" src= "my.jpg" />';
$pattern = '/<img.*?src\s*=\s*"(.*?)".*?\/?/i';
preg_match($pattern,$str,$match);
var_dump($match);

运行结果:

array(2) {
  [0]=>
  string(68) "<img alt = "撒旦阿萨德" id = "11" class = "image" src= "my.jpg""
  [1]=>
  string(6) "my.jpg"
}
返回文章列表 打赏
本页链接的二维码
打赏二维码