正则:检测字符串的一条规则
Json本质还是字符串
正则的定义 简写 /规则/ 比如/45613/检测字符串必须有45612;
字符串和正则有关的方法。
Match() 查找找到一个或多个正则表达式的匹配 有就返回查找的结果 没有就是null
语法:string.match(reg)
Search() 查找与正则表达式相匹配的值 检索不到返回-1 返回查找的字符首次在字符串中的位置
Replace()在字符串中查找匹配的子串 并替换与正则表达式匹配的子串
如果检索到 返回替换后的新字符串 如果没有检索到 返回字符串
语法:string.searc(red)
注意的
1.字符串中的. 在正则中如果就代表一个. 需要转义\.
/./ 代表任意一个字符 /\./代表一个.
2.
正则对象的两个方法
Text() 检索字符串中指定的值 返回true或false
语法 reg.test(string)
Exec() 检索字符串中指定的值 返回一个数组 有找到的值并确定其位置找不到返回null
正则的特征
1.正则的懒惰性:
正则在捕获的时候 当第一次捕获成功了 就直接返回 不再向下捕获 这就叫正则的懒惰性
解决正则的懒惰性
在正则的后面加上修饰符/g
2.正则的贪婪性:
/\d+/去捕获一个字符串中的数字 他会尽可能多的捕获全部符合条件的 这叫正则的贪婪性
解决正则的贪婪性 /\d+/ +代表1个或多个 ?代表0个或1个
在+后面跟一个? /\d+?/
解决正则的贪婪性
字符串检索 分两种结果
第一种是查找型 查找到就终止 不会向下继续查找
第二种是捕获型 分两种 第一是捕获首次出现的 第二种是捕获所有的/g
分组捕获 () 这是分组捕获的标志 将大正则分组成几个小正则 在正则中\1 代表第一个分组 \2代表第二个分组
比如: /(a)(b)\1\2/ 代表abab这个规则
在分组捕获中
结果即返回了大正则的捕获结果 也返回了小正则的捕获结果
如果不想捕获某一个分组中的内容 在对应的分组中的前面加上?: 就可以了同时分组引用(\1\2)也失效
一旦分组捕获成功 在正则的类上会给$1 $2 等赋值
RegExp $1 也是分组引用
\1 也是分组引用 只能在正则中起作用
Php的正则方法
Preg_match()执行一个正则表达式匹配
参数1是reg 参数2是string 返回值是0或1 查到就是1 查不到就是0
Preg_match_all() 执行一个全局正则表达式匹配
参数1 是reg 参数2是string 返回值是0和 n n 是查找到总次数 0 是没有查到
Preg_replace()执行一个正则表达式的搜索和替换
参数1是reg 参数2是newstring 参数3