2018-07-04 18:08:44  403561 0

PHP之正则表达式

 标签:   

正则表达式介绍

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。      

    正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。


正则表达式可以用来:


(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。

(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(爬虫)

(3)用来替换,比普通的替换更强大(str_replace) 


正则表达式创始人


肯·汤普森(Kenneth Lane Thompson,1943年2月4日-),一般称之为Ken Thompson,为美国计算机科学学者,与丹尼斯·里奇同为1983年图灵奖得主。


QQ截图20180704180042.jpg


    正则表达式   由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义


普通字符

     字母、数字、下划线,以及没有被定义特殊意义的标点符号,都是 “普通字符”。  abcde 123123 _  ; ‘”


字符集合

可以匹配 “多个字符” 其中任意一个字符的正则表达式。虽然是 “多个字符”,但每次只能匹配其中一个。


1.jpg


匹配次数限定符

2.jpg


字符边界

本身不匹配任何字符,只对字符边界和字符间缝隙附加条件的表达式。

3.jpg

其他常用的字符


使用竖线 “|” 分隔多段表达式,整个表达式可匹配其中任意一段 



用括号进行分组()


转义  \


[abc]  匹配任意的abc字符  同 a|b|c

[a-z]  匹配 a-z的字母

[^a-z] 匹配不是a-z的字母  ^非


\d等价于[0-9]

\D等价于[^0-9]

\w等价于[A-Za-z_0-9]

\W等价于[^A-Za-z_0-9]。


常用匹配的字符规则


匹配用户名长度6-12数字字母下划线:^\w{6,12}$

匹配手机号码:^1[3|4|5|6|7|8](\d{9})$

匹配QQ号:^[1-9]\d{4,9}$

 匹配email地址:^\w+@[a-zA-Z0-9]+\..+$

 匹配url地址:^https?://[a-zA-Z0-9]+\.[0-9a-zA-Z-]+\.[a-zA-Z]+$


PHP使用正则表达式

int preg_match  ( string $pattern  , string $subject  [, array &$matches  [, int $flags  = 0  [, int $offset  = 0  ]]] )


搜索subject与pattern给定的正则表达式的一个匹配. 



int preg_match_all  ( string $pattern  , string $subject  [, array &$matches  [, int $flags  = PREG_PATTERN_ORDER    [, int $offset  = 0  ]]] )


搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中. 


贪婪匹配与非贪婪匹配


贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。


默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。



此文章对应的视频教程以及正则实战地址:点我观看

0 条留言此文章没有人评论

给我留言

评论内容