PHP正则表达式基础语法

时间:2022-12-06 19:46:58

正则表达式

 

正则表达式是一种字符串搜索工具和匹配工具

Php常用的正则表达式函数如下:

Preg_match($pattern,$subject)  表单验证等

Preg_match_all($pattern,$subject,array&$matches)

Preg_replace($pattern,$replacement,$subject)  非法词语过滤等

Preg_filter($pattern,$replacement,$subject)

Preg_grep($pattern,array,$input)

Preg_split($pattern,$subject)

Preg_quote($str)

 

 

$pattern=正则表达式

$subject=匹配的目标数据

 

正则表达式基本语法

界定符

$pattern=’/[0-9]/’;

#[0-9]#

{[0-9]}

 

原子

  • 可见原子

Unicode 编码表中用键盘输出后肉眼可见的字符

有哪些?

标点:“_?.等等

--英文字母数字 a-z, A-Z,0-9

--汉字、日文、阿拉伯文等其他语言文字

--数理化公式符号

--其他可见字符

 

  • 不可见原子

换行符\n

回车\r

制表符\t

空格

其他不可见符号

量词

{n} 表示其前面的原子恰好出现n次

{n,} 表示其前面的原子最少出现n次

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

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

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

边界控制

^ 匹配字符串开始的位置

$ 匹配字符串结尾的位置

()匹配其中的整体为一个原子

模式单元

修正模式: 默认为贪婪模式 ,懒惰模式 实在后面加个大写的U 例如 /123456/U

常见的修正模式

U:懒惰匹配

u:贪婪匹配

i:忽略英文字母大小写

x:忽略空白(回车,空格等)

s       让元字符. 匹配包括换行符在内的所有字符

Regexpl正则调试工具

匹配中文时,为避免编码格式不同产生的错位,建议先将中文转换成Unicode编码

元字符

原子的筛选方式

| 匹配两个或者多个

[]匹配方括号中的任意一个原子

[^]匹配除方括号中的原子之外的任意字符

 

元字符

原子的集合

匹配除换行符之外的任意字符

. 除了换行符之外的任意字符

\d 匹配任意一个十进制数字 ,即[0-9]

\D 匹配任意一个非十进制数字,即[^0-9]

\s 匹配一个不可见原子,即[\f\n\r\t\v]

\S 匹配一个可见原子,即[^\f\n\r\t\v]

\w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z]

 

 

w:匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。

\W:匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

如果用re.sub(r'[_|\W]', '', text)  会除掉所有的非单词或者下划线"_",

如果用re.sub(r'[_|\w]', 'x', text),会用‘x'替换所有的'_'和单词字符

 

常见的正则表达式

.+ 非空

1(3|4|5|7|8)\d{9}  匹配*的手机号

^\w+(\.\w+)*@\w+(\.\w+)+$ 验证邮箱的

^(https?://)?(\w+\.)+[a-zA-Z]+$ 网址的

 

 

山寨Smarty模板引擎的开发

模板引擎的工作原理

获取模板源文件

编译模板(正则替换)

输出给用户

仿smarty简易模板引擎,在一个标准的PHP系统中,模板引擎肯定是要有的,便于前端工程师和后端工程师把工作分开来,而且前端工程师不需要懂后端的代码。

 

在线调试工具

http://cs.smu.ca/~porter/csc/355/regexpal/

 

 

?: 是 不想被捕获的时候使用 可以提高程序执行速度