php正则表达式

1,以/为起始和截止符
2,^tm表示行开头匹配tm tm$表示行结尾匹配tm 直接tm表示整个匹配
3,单词定界符:(\b, \B),\b表示匹配的是一个单词,\B表示匹配的不是一个单词
例如\btm\b表示匹配一个完整的单词tm, \Btm\B表示匹配的不是一个完整的单词,而是其他单词或者字符串的一部分
4,字符类
正则表达式是区分大小写的,如果忽略大小写可以使用方括号表达式"[]",比如[Tt],表示不区分T的大小写
另一个不区分大小写是"|",两者区别是前者只有单字符,后者可以多字符串

5,连字符"-"表示范围

例如[a-zA-Z]表示匹配所有的字符开头的字符串

6,排除号字符"^"

这个字符和2一样,但是如果放在字符前面,表示开头匹配,但是放在方括号"[]"中,则表示排除号字符,例如[^a-zA-Z]表示匹配所有的不以字符a-z和A-Z开头的字符串

7,限定符(?,+,*,{n,m})

代表的意思分别是

限定符说明举例
匹配前面的字符零次或者一次colou?r匹配color或者colour
+匹配前面的字符一次或者或者多次go+gle陪陪匹配gogle,google,gooogle
*匹配前面的字符零次或者多次go*gle匹配ggle,gogle
{n}匹配前面的字符n次go{2}gle只匹配google
{n,}匹配前面的字符最少n次go{2}gle匹配google,gooogle,goooogle
{n,m}匹配前面的字符最少n次,最多n次go{2,3}gle只匹配google,gooogle

8,点号字符(.)

点号字符可以匹配除了换行符之外的任何一个字符,注意,是一个字符,那么以s开头,t结尾,中间有一个字符的正则表达式是^s.t$

9,小括号

小括号的作用有两个,一个是改变限定符的作用范围,例如(thirt|four)th表示匹配thirth,fourth,另外一个作用是分组,也就是子表达式,例如(\.[0-9]{1,3}){3}是对分组进行操作

10,反斜线对应的预定字符串信息

预定义字符集说明
\d任意一个十进制数
\D任意一个非十进制数
\s任意一个空白字符(空格,换行符,分页符,回车符,水平制表符),对应于[\f\n\r\t]
\S任意一个非空白字符
\w任意一个单词字符,相当于[a-zA-Z0-9_]
\W任意一个非单词字符

下面是系统的学习

数组匹配
//正则表达式的格式 /规则/i 添加i匹配时,表示不区分大小写
// \d表示一个数字
// (\d)表示一个子表达式
// \1,表示第一个子表达式的内容,应该出现在这里
// {3}表示出现3次
$str = "111-222-111qwertadf444-555-ssswqw-111-222-444-ewewewewew";
$reg = '/(\d)\1{2}-(\d)\d\2-\1{3}/i'; //匹配类型为xxx-yzy-xxx
$reg = '/(\d)\1{2}-(\d)\2{2}-(\d)\3{2}/i'; //匹配类型为xxx-yyy-zzz
/* preg_match_all返回的格式如下,解析的结果是
$rst[0][0]表示匹配到的第一个结果
$rst[0][1]表示匹配到的第二个结果
$rst[1][0]表示第一个匹配结果的第一个表达式的匹配结果
$rst[1][1]表示第二个匹配结果的第二个表达式的匹配结果

Array
(
[0] => Array
(
[0] => 111-222-111
[1] => 111-222-444
)

[1] => Array
(
[0] => 1
[1] => 1
)

[2] => Array
(
[0] => 2
[1] => 2
)

[3] => Array
(
[0] => 1
[1] => 4
)

)
preg_match_all返回结果

preg_match的结果解析如下
preg_match返回的只是匹配的第一个结果值
$rst[0]表示匹配的结果
$rst[1]表示第一个表达式的值

Array
(
[0] => 111-222-111
[1] => 1
[2] => 2
[3] => 1
)
preg_match返回结果

 

$str2="leeyangyYAg@sina.com";
$reg2 = '/^([a-z_]+)@(sina|soho)\.(com|cn)$/i';
/*对$reg2的解析
^表示开头
$表示结尾
()内表示一个表达式,[]内表示包含的字符,比如a-z表示a到z,所有数字和字母可以表示为[a-zA-Z0-9]后面可疑 跟特殊字符
|表示或的意思,如sina|soho表示sina或者soho
*/

正则表达式元字符的语法
1,限定符
{}
用于限定前面的字符或者组合项出现的次数,例如a{3}表示a出现3次
+
用于表示前面的字符或者组合项出现1次或者多次
*
用于表示前面的字符或者组合项出现0次或者多次

用于表示前面的字符或者组合项出现0次或者1次
2,字符匹配符
[a-z]表示匹配的a到中的一个字符,
特别注意^[a-z]和[^a-z]的区别,前者表示只有a-z,后者表示除了a-z之外的,前者的含义是以a-z开头的,后者表示除了a-z,他们的含义不同,也就是说^在不同的位置,意义不一样
\d表示匹配0-9的
\D表示匹配除了0-9的,相当于[^0-9],所有[\d\D]就表示匹配所有的可见字符,因为表示匹配0-9和匹配不是0-9的
\w表示匹配任意英文字符,数字,下划线,相当于[a-zA-Z_];
\W与\w表示正好相反相当于[^a-zA-Z_];
\s表示匹配任意空白字符,比如说空格,制表等
\S表示匹配任意非空字符
.表示匹配出除了\n之外的任意字符,不要再带[]了
\.表示一个点号.
3,特殊字符匹配
\xn表示 x是固定的,n是一个十六进制数,比如\x21表示去匹配ascii表中十六进制21所对应的字符
4,定位符
^匹配目标字符串开始的位置
$匹配目标字符串结束的位置
\b匹配目标字符串的边界 \btm\b表示匹配一个完整的单词tm,
\B匹配目标字符串的非边界 \Btm\B表示匹配的含有tm的单词,\btm\B,匹配tm开头的单词
5,转义符号
. * + $ ? ^ / \ () [] {}
转义符号前面需要加上\
?:匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

$str5="2.168.1.1";
//匹配IP地址
$reg5 = '/((?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}((?:25[0-5]|2[0-4]\d|[01]?\d?\d))/';

转载于:https://www.cnblogs.com/ningheshutong/p/5159662.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值