PHP学习笔记12:正则表达式

什么是正则表达式?

是把文本或字符串按照一定的规范或模型表示的方法,常用于文本的匹配操作。

正则表达式的语法规则

一般情况下,正则表达式由两部分组成,分别是元字符和文本字符。元字符就是具有特殊含义的字符,例如?*等,文本字符就是普通的文本,例如字母和数字等。

方括号 []

方括号内的一串字符是将要用来进行匹配的字符。例如正则表达式在方括号内的[name]是指在目标字符串中寻找字幕name[eeg]表示在目标字符串中寻找字符eg

连字符 -

通常情况下,不可能逐个列出所有的字符。比如要匹配26个英文字符,则把26个字幕全部输入会比较麻烦。可以这样表示:

  • [a-z] 表示匹配英文小写从a到z的任意字符。
  • [A-Z] 表示匹配英文大写从A到Z的任意字符。
  • [A-Za-z]` 表示匹配英文大小写从大写A到小写z的任意字符。
  • [0-9] 表示匹配从0到9的任意十进制数。
    由于字母和数字的区间固定,因此根据这样的表示方法,即[开始-结束],我们可以重新定义区间大小,如[2-5][f-m]等。

点号字符 .

点号字符在正则表达式中是一个通配符,代表所有字符和数字,例如,“.er”表示所有以er结尾的三个字符的字符串,可以是1erterger#er等。

限定符 +*?{n,m}

  • + 加号表示其前面的字符至少有一个。例如6+表示目标字符串包含至少一个6。
  • * 星号表示前面的字符不止一个或零个。例如x*表示目标字符串包含0或不止一个x。
  • ? 问号表示前面的字符为一个或零个。例如*?表示目标字符串包含0或一个x。
  • {n,m}花括号表示其前面的字符有n或m个。例如a{3,7}表示目标字符串包含3个或5个a。a{3}表示目标字符串包含3个a。a{3,}表示目标字符串至少包含3个a。

点号和星号可以一起使用,如.*表示匹配任意字符。

行定位符 ^和$

行定位符用来确定匹配字符串索所出现的位置。
如果是在目标字符串头部出现,就是用符号^;如果是在目标字符串结尾出现,就使用符号$

例如:^anything是指anything只能出现在目标字符串开头,985211$是指985211只能出现在目标字符串结尾。

可同时使用这两个符号,如^[a-z]$表示目标字符串只包含从a到z的单个字符。

排除字符 [^]

符号^在方括号内所代表的意义则完全不同,表示一个逻辑“否”,排除匹配字符串在目标字符串出现的可能。例[^0-9]表示目标字符串包含从0到9以外的任意其它字符。

括号字符 ()

括号字符表示子串,所有对包含在子串内字符的操作都是以子串为整体进行的。括号字符也是把正则表达式分成不同部分的操作符。

选择字符 |

选择字符表示“或”,例com|cn|com.cn表示目标字符串包含com或cn或com.cn。

转义字符\与反斜线\\

由于\在正则表达式中属于特殊字符,如果单独使用此字符,就直接表示作为特殊字符的转义符。如果要表示反斜线字符本身,就在此字符前添加转义字符\\\

认证email的正则表达

在处理表单数据的时候,对用户的email进行认证,可以用正则表达式匹配来判断用户输入的是否为一个email地址。格式:

^[A-za-z0-9_.]+@[A-Za-z0-9_]+\.[A-Za-z0-9.]+$

其中^[A-za-z0-9]+表示至少有一个英文字符、数字、下划线、点号,或者这些字符的组合。
@表示email中的@
[A-Za-z0-9_]+表示至少有一个英文大小写字符、数字、下划线,或者这些字符的组合。
\.表示email中“.com”中的那个点。由于这个点只是点本身,因此用了转义符反斜杠对它进行转义。
[A-Za-z0-9.]+$表示至少有一个英文大小写字符、数字、点号或者这些字符的组合,并且知道这个字符串的结尾。

如何使用正则表达式对字符串进行匹配

需要用到ereg()函数。用于在目标字符串中寻找符合特定正则表达规范的字符子串,根据指定的模式来匹配文件名或字符串。

ereg()函数对大小写不敏感。eregi()函数区分大小写。这是两个函数不同之处。

语法:

ereg(正则表达式规范, 目标字符串, 数组)

使用正则表达式替换字符串子串

需要用到的函数是ereg_replace()eregi_replace()函数,跟上面一样,前者对大小写不敏感,后者区分大小写。格式:

ereg_replace(正则表达式, 将要取代字符串子串, 目标字符串)

我决定不写笔记了,太耗神了。以后把遇到的一些问题随便记录上来就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值