正则:检测字符串的一种规则。简写成 /规则/
字符串和正则有关的方法
match() 查找到一个或多个正则表达式的匹配,有就返回查找到的结果,没有就返回null
Search() 查找与正则表达式相匹配的值 检索不到就是-1,检索到就返回查找的字符首次在字符串中的位置
Replace() 在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。如果检索到 返回替换后的新字符串 如果没有检索到,返回原字符串
字符串的检索分两种结果:
第一种是查找型,查找到一次就终止,不会在查找
第二种是捕获型,捕获型也分两种,一个是捕获最先出现的,一种是捕获所有相匹配的。
正则对象的两个方法
test() 检索字符串 中指定的值,返回true或false
exec() 检索字符串中指定的值,返回一个数组,有找到的值,返回其位置,没有就返回null
正则的性质
正则的懒惰型:正则在捕获的时候,当第一次捕获成功了,就直接返回,不在向下捕获,这就是正则的懒惰型。
解决方法:在正则的后面加上修饰符 /g
正则的贪婪性:/d+/ 去捕获一个字符串中的数字,他会尽可能多的捕获全部符合条件的,这就是正则的贪婪性
解决方法:+代表一个或多个数字 ?代表0个或1个 在+后面跟? /d+?/ 就可以解决。
正则表达式的字符
i 执行对大小写不敏感的匹配
g 执行全局匹配
m 执行多行匹配
d 查找数字
s 查找空字符
查找单词边界
n+ 匹配任何包含至少一个n的字符串
n* 匹配任何包含0个或多个n的字符串
n? 匹配任何包含0个或1个n 的字符串
php的正则表达式
preg_match 执行一个正则表达式匹配
$str="helloworld"; $reg="/hello/"; echo preg_match($reg,$str); //返回值有0或1 找不到符合条件的就是 0 查找到就是 1
preg_match_all 执行一个全局正则表达式匹配
$str="helloworldhello1811hello"; $reg="/hello/"; echo preg_match_all($reg,$str); //返回值有 0 或 n n代表匹配到符合条件的总次数 0 就是没查到
preg_replace 执行一个正则表达式的搜索和替换
$str="['hello','456']"; $reg="/hello/"; var_dump( preg_replace($reg,"world",$str)); //第二个参数表示替换的单词 第三个参数表示替换后的结果
preg_split 通过一个正则表达式分割字符串
$str="123helloworldhello1811helloweb"; $reg="/hello/"; var_dump(preg_split($reg,$str)); //返回切割后的字符串