正则表达式的基本语法:
界定符、原子、量词、边界控制、模式单元
界定符:
表示一个正则表达式的开始和结束。
界定符不是正则表达式的一部分。
//,##,{};都是界定符。
例如:/[0-9]/ 、 #[0-9]# 、 {[0-9]}
正则表达式的工具:
原子:
可见原子:Unicode编码表中用键盘输出后肉眼可见的字符
例如:
标点;“_?.等等
英文字母数字 a-z,A-Z,0-9
汉字,日文,阿拉伯文等其他语言文字
∑,∈,∫,≈等数理化公式符号
其他可见符号
不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符
例如:
换行符\n
回车\r
制表符\t
空格
其他不可见符号
元字符
原子的筛选方式
| 匹配两个或者多个分支选择;
[] 匹配方括号中的任意一个原子
[^] 匹配除方括号中的原子之外的任意字符
原子的集合
. 匹配除换行符之外的任意字符
\d 匹配任意一个十进制的数字。即[0-9]
\D 匹配任意一个非十进制数字。即[^0-9]
\s 匹配一个不可见原子,即[\f\n\r\t\v]
\S 匹配一个可见原子,即[^\f\n\r\t\v]
\w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z]
\W 匹配任意一个非数字、字母或下划线,即[^0-9a-zA-Z]
量词:
{n} 表示其前面的原子恰好出现n次
{n,} 表示其前面的原子最少出现n次
{n,m} 表示其前面的原子最少出现n次,最多出现m次
* 匹配0次、1次或者多次其之前的原子,即{0,}
+ 匹配1次或者多次其之前的原子,即{1,}
? 匹配0次或者1次其之前的原子。即{0,1}
边界控制与模式单元
^ 匹配字符串开始的位置
$ 匹配字符串结尾的位置
() 匹配其中的整体为一个原子
修正模式
常见的修正模式:
U 懒惰匹配
i 忽略英文字母的大小写
X 忽略空白
S 让元字符’.’匹配包括换行符在内所有字符
e
懒惰匹配和贪婪匹配
//正则表达式的贪婪匹配和懒惰匹配
$pattern ='/imooc.+123/';
$subject = 'i love imooc__123123123123123';
$matches = array();
preg_match($pattern,$subject,$matches);
show($matches);
运行结果:
懒惰匹配正则表达式$pattern = ‘/imooc.+123/U’;
运行结果:
忽略大小写i
$pattern ='/iMoOc.+123/i';
$subject = 'i love imooc__123123123123123';
$matches = array();
preg_match($pattern,$subject,$matches);
show($matches);
运行结果:
忽略空白符x
$pattern ='/i Mo Oc.+123/ix';
$subject = 'i love imooc__123123123123123';
$matches = array();
preg_match($pattern,$subject,$matches);
show($matches);
运行结果:
**非空:.+
浮点数匹配:
\d+.\d{2}$
解释:\d 代表[0-9]数字
- 代表1或者若干个数字
. 代表的小数点
\d{2} 代表连续两个小数点
$ 结尾符
手机号匹配:
1(3|4|5|6|7|8)\d{9}
E-mail匹配:
^\w+(.\w+)*@\w+(.\w+)+$
URL的地址匹配:
^(https?://)?(\w+.)+[a-zA-Z]+$**