php正则表达式简介

正则表达式简介

正则表达式Regular Expression,使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。代表性书籍《正则表达式之道》里面有详细论述,本书籍为个人查阅之用力求精简、明确、方便使用,只对必要概念做补充性说明。

界定符

正则表达式本身即是一个字符串,需要一组界定符区分出哪里是正则表达式的内容。//和##和{},都是界定符,在PHP语言中用//作为正则表达式的界定符。一般不建议用{}做界定符,因为{}本身也可以是正则表达式的元字符,容易混淆。

元字符

| 匹配两个或者多个分支选择
[] 匹配方括号中任意的原子
[^] 匹配方括号中原子之外的任意字符,相当于[]的非
. 匹配除换行符之外的任意一个字符
d 匹配任意一个十进制的数字,即[0-9]
D 匹配任意一个非十进制的数字,即[^0-9]
s 匹配任意一个不可见原子(空白符),即[f v]
S 匹配任意一个非不可见原子(空白符),即[^f v]
w 匹配任意一个数字、字母或者下划线,即[0-9a-zA-Z_]
W 匹配任意一个非数字、字母、或者下划线,即[^0-9a-zA-Z_]

量词(匹配次数)

{n} 前面原子恰好重复n次
{n,} 前面原子重复>=n次
{n,m} 前面原子重复大于等于n次,小于等于m次
*重复0次或者更多次
+重复1次或者更多次
?重复0次或者1次

边界控制(匹配位置)

() 匹配括号内的原子集合作为一个原子看待
 匹配单词的开始或者结束位置
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
G 匹配上一个匹配的结尾(本次匹配的开始)
A 匹配字符串开头(类似^,但是不受处理多行选项的影响)
 匹配字符串的结尾或者行尾(不受处理多行选项的影响)
z 匹配字符串的结尾(类似$,但是不受处理多行选项的影响)

修正模式

贪婪匹配,匹配结果存在歧义时取其长(PHP中为默认模式)
懒惰匹配,匹配结果存在歧义时取其短
U 修正为懒惰模式
i 忽略英文字母大小写
x 忽略空白符
s 让元字符 . 匹配任意字符包括换行符
e 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串

转义

正则中的元字符都要加进行转义:
$ ( ) * + . [ ] ? ^ { } |

非空

.+

大陆手机号

1[34578]d{9}

email

^w+(.w+)*@w+(.w+)+$

URL

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

原文地址:https://www.cnblogs.com/qingsong/p/5385196.html