正则表达式
可以查找, 替换,匹配字符串的.
1.使用场景
在表单提交时,需要验证用户信息(邮箱,手机号,qq,身份证号)
修改配置文件
替换修改,查找字符串中的信息
2.使用原则
替换字符串时,能使用函数解决的尽量不要使用正则
世界上最难理解的三个东西: 医生的处方, 道士的符, 程序媛(猿)的正则
3.基本使用
正则的组成:定界符, 原子, 元字符 ,模式修饰符.
定界符:正则表达式写在定界符的里边.除了0-9,a-z,A-Z,_之外的其他字符都可以作为定界符
例如: /(常见的使用者) $ # @
原子
组成正则表达式的最基本的单位
a-z, A-Z ,0-9 _ 都是最基本的原子
特殊原子
\d:代表0-9中任意一个数字 [0-9] [^\d]===[\D]
\D:代表除了0-9中任意一个字符
\w(小写): 匹配的是0-9,a-z,A-Z,_中任意一个字符 [0-9a-zA-Z_]
\W:匹配除了0-9,a-z,A-Z,_之外的任意一个字符
\s:代表匹配空格 \t \n \r
[注]匹配\n时,单引号不能解析,要使用双引号把\n括起来
\S:匹配所有非空,除了\s不能匹配
\b: 词边界
\B: 非词边界
[]:里边可以放一系列的原子
^: 代表给原子取反, 抑扬符 写在[]里边
.: 匹配除了\n之外的任意一个字符
fyrehgtjhyju
.*
元字符
是来修饰原子的.
*: 匹配前边原子至少出现0次或者任意次数.
+: 匹配前边原子至少出现1次或者任意次数
?: 匹配前边原子出现0次或者1次
{}: 限制前边原子出现的个数
{m, n}: >=m, <= n
贪婪匹配: 尽可能多的匹配到结果
{m}: m次
{m,}: 至少出现m次
{,n}: 这是一个错误的写法 {0,n}
^:抑扬符 表示匹配字符串的开始
\A: 用法和^一致
$: 表示匹配字符串的结尾
\Z:用法和$一致
|: 或者
(): 加小括号可以指定优先级
模式修饰符
对正则表达式进行额外的修饰的.
i: 不区分大小写
m:将字符串视为多行 multiple
s:将字符串视为单行 single [注] 本身.不能匹配\n,但是在定界符外边加上s,就可以匹配
x:取消正则中的空格
A:跟^一样
U: 非贪婪匹配
.+?
.*?
在+或者*的后边加?也表示非贪婪匹配
4.正则函数
preg_match: 匹配正则,只匹配一次,从左往右
preg_match_all: 匹配全部
preg_replace: 替换匹配的结果
preg_split:通过一个正则表达式分隔字符串
5.常用正则匹配文件修改
//邮箱
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
//手机号
/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/
//固话
/^((0\d{2,3}-\d{7,8})|(1{2}]\d{9}))$/;
//多个手机号,用“,”分开
/^(1([38]\d|4[57]|5[0-35-9]|7[06-8])\d{8})(,(1([38]\d|4[57]|5[0-35-9]|7[06-8])\d{8}))*$/
// IP 地址
/^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)($|(?!\.$)\.)){4}$/