PHP-正则表达式整理

1.PHP正则表达式函数

preg_math($patern,$subject,[array & $matches])//匹配一次
preg_math_all($patern,$subject,array & $matches)//匹配多次
return 匹配到结果的次数
preg_replace($pattern,$replacement,$subject)//发生替换和未发生替换都保留
preg_filter($pattern,$replacement,$subject)//保留发生替换的字符串
preg_grep($pattern,$array $input)//preg_grep函数只会去做匹配的操作,不做替换
阉割版preg_filter
preg_split($patern,$subject)
//类似explode(),以$patern作为分割点,分割$subject
preg_quote($str)//转义正则运算符$str
正则运算符
.\+*?[^]$(){}=!<>|:-
preg_math 表单验证
preg_replace 非法词语过滤

2.正则表达式基本语法

界定符,原子,量词,边界控制,模式单元

2.1界定符

表示一个正则表达式的开始和结束
$pattern = '/[0-9]/';
这几种都可以: /[0-9]/ #[0-9]# {[0-9]} 推荐// ##

推荐工具regexpal

2.2原子

可见原子:Unicode编码表中键盘输出后肉眼可见的字符
如:标点
英文字母数字
汉字其他语言文字
数理化公式等

不可见原子
换行符\n
回车\r
制表符\t
空格

文字建议转化为Unicode编码来匹配
匹配正则表达式运算符前加 \ 来转义

2.3元字符

原子的筛选方式
| 匹配两个或者多个分支选择
[] 匹配方括号中的任意一个原子
[^] 匹配除方括号中的原子之外的任意字符

原子的集合
. 除换行符之外的任意字符
\d 任意一个十进制数字[0-9]
\D 任意一个非十进制数字即[^0-9]
\s 任意一个不可见原子(空格、换行符、换页符、回车符、字表符)即[\f\n\t\v]
\S 任意一个可见原子即[^\f\n\t\v]
\w 任意一个数字、字母或下划线即[0-9a-zA-Z_]
\W 任意个非数字、字母或下划线即[^0-9a-zA-Z_]

3.量词

{n} 表示前面的原子恰好出现n次
{n,} 表示前面的原子最少出现n次
{n,m} 表示前面的原子最少出现n次,最多出现m次

  •       匹配0次、1次或者多次其之前的原子,即{0,}
    
  •       匹配1次或者多次其之前的原子,即{1,}
    

? 匹配0次或者1次其之前的原子,即{0,1}

[a-z]{2}//小写字母连续出现2次
\w{4}//数字、字母或下划线连续出现4次

4.边界控制

^匹配字符串开始的位置
$匹配字符串结束的位置
()匹配其中的整体为一个原子

5.模式单元

(D|d)ung~
匹配出 Duang~duang~

6.修正模式

贪婪匹配:匹配结果存在歧义时取其长
懒惰匹配:匹配结果存在歧义的取其短

//默认贪婪模式,   //后加U为懒惰模式
$pattern = '/agegg.+123U/';
$subject = 'i am agegg__123123123';
$matches = array();
preg_math($pattern,$subject,$matches);
show($matches);

function show($var=null){
    if(empty($var)) {
        echo 'null';
    } elseif(is_array($var)||is_object($var)){
        echo '<pre>';
        print_r($var);
        echo '</pre>';
    } else {
        echo $var;
    }
}

常见修正模式
U 懒惰匹配
i 忽略英文字母大小写
x 忽略空白
s 让元字符' . '匹配包括换行符在内的所有字符
e

EX

//非空 
.+
//保留两位数字浮点数
\d+|.\d{2}$
//手机号
1(3|5|7|8|4)\d{9}
//email地址
^\w+(\.\w+)*@\w+(\.\w+)+$
//URL地址
^(https?://)(\w+\.)+[a-zA-Z]+$

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • 概述 正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。常用的语...
    醉于麦田阅读 495评论 0 0
  • PHP常用正则表达式汇总 正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正...
    DragonRat阅读 1,459评论 0 4
  • 正则表达式介绍 正则表达式简介 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、...
    dptms阅读 10,917评论 1 9
  • ----- 最近更新【2021-12-15】----- PHP强化系列--目录[https://www.jians...
    四月不见阅读 743评论 0 1
  • 关于PCRE的介绍以及实现正则表达式功能的所有说明,都可以在官方手册中看到:正则表达式(兼容 Perl) 一、认识...
    拿破仑蛋糕阅读 1,610评论 0 1