mydal

怕光阴流逝 让一切都作废

0%

php正则表达式

php正则表达式

好久没写博客,最近过的太水,正好暑假报了暑假班学习了php基础,自我感觉效果还可以,但是正则表达式感觉没有掌握,水一篇加强一下记忆。

php.jpg

一 概念

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二 作用

实际应用当中主要用于以下几个方面

  1. 注册页面判断用户输入的内容是否符合验证规则
  2. 从整体字符串中看是否包含指定的字符串
  3. 找到符合规则的字符串进行替换

三 语法规则

3.1 定义规则

$reg='/自己定义规则符号/';

3.2 符号简介

正则表达式手册:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

正则表达式可以有普通符号和元字符组成

普通字符:

概念: 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。

也就是说普通字符只能够匹配字符串中与它们相同的字符。如:‘/a/’代表你就要匹配字符a

‘/a7/’代表你就要匹配字符a7

元子符:正则表达式中规定了一系列的特殊字符,这些字符不是按照字符的直接量进行匹配的,而是具有特殊的语义。如: ^ $ . * + ? = ! : | \ / ( ) [ ] { }

行定位符(^与$)

行定位符是用来描述字符串的边界。 “$”表示行结尾 “^”表示行开始如"^de",表示以de开头的字符串 "de$",表示以de结尾的字符串。

选择字符(|)

选择字符表示或的意思。如Aa|aA,表示Aa或者是aA的意思。注意使用”[]”与”|”的区别,在于”[]”只能匹配单个字符,而”|”可以匹配任意长度的字符串。在使用”[]”的时候,往往配合连接字符”-“一起使用,如[a-d],代表a或b或c或d。

排除字符

正则表达式提供了”^”来表示排除不符合的字符,^一般放在[]中。如[^1-5]该字符不是1~5之间的数字。

限定符

1.png

点号操作符

匹配任意一个字符(不包含换行符)

转义字符()

表达式中的反斜杠有多重意义,如转义、指定预定义的字符集、定义断言、显示不打印的字符。

转义字符主要是将一些特殊字符转为普通字符。而这些常用特殊字符有”.”,”?”、”\”等。

预定义的字符集

  1. 2.png

括号字符()

在正则表达式中小括号的作用主要有:

  1. 改变限定符如(|、* 、^)的作用范围 如(my|your)baby,如果没有”()”,|将匹配的是要么是my,要么是yourbaby,有了小括号,匹配的就是mybaby或yourbaby。
  2. 进行分组,便于反向引用

3.3正则匹配的方法

preg_match($reg,$str,[$arr]);

$reg是自己定义的正则表达式

$str是自己要查询的字符串

$arr是匹配到的结果

3.3.1preg_match()用法详解

preg_match()只要找到一次符合正则表达式的结果就终止了,不会再往下匹配

preg_match_all()是匹配一次成功以后不会终止,会一直匹配到完

四 高级应用

4.1贪婪模式

正则表达式里会尽可能多的匹配的元素

3.png

4.2禁止贪婪模式

5.png

6.png

4.3反向引用

在匹配到某个字符串之后,后续还需要使用该字符串。这就是反向引用。

  1. 捕获:将需要的字符串保存起来,便于后续引用,可以理解为保存到内存中,同时对它进行一个编号,使用小括号即可。它会从1开始编号,依次是2,3,4..。

  2. 2、引用:只需要使用 \编号 即可, \1 \2 \3 (第一个”"表示转义)

  3. 括号编号的顺序不一定是书写的顺序,应该是执行的顺序。如果括号是平行,从左到右,如果括号是包含关系,先内后外。

五 总结

自我感觉过了一遍基本没什么效果,接触正则太少,还是需要多写多练,在菜鸟的路上越走越远。