比别人多一点志气,你就会多一份出息 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

PHP中关于正则的一些小笔记

开发 memory 发布于June 27, 2017 标签: PHP

正则是很多程序员入门最头疼的,我之前也是
在2011年之前,当时看着正则完全就是蒙的,于是写正则这样的任务全部扔给了浪浪来做...
事过这么多年,正则越用越顺手了
于是简单的记录一下常用的

前言

1.界定符
2.原子
3.元字符
4.修正符

界定符

界定符正如其名,就是定一个边界,边界已内的就是正则表达示。
必须成对出现,有开始就有结束。不能用a-zA-Z0-9\
举些粟子:

/中间写正则/    正确
$中间写正则$    正确
%中间写正则%    正确
^中间写正则^    正确
@中间写正则@    正确
(中间写正则)    错误
A中间写正则A    错误

特别注意\是转义字符,如果在以后正则表达示里面需要匹配/,则是/\//

原子

原子说白了就是需要匹配的内容。一个成立的正则表达示当中必须最少要有一个原子。
所有可见不可见的字符就是原子
说明:我们见到的空格、回车、换行、0-9、A-Za-z、中文、标点符号、特殊符号全为原子。
这儿说下几个特殊标识的原子

\d    匹配一个0-9
\D    除了0-9以外的所有字符
\w    a-zA-Z0-9_
\W    除了0-9A-Za-z_以外的所有字符
\s    匹配所有空白字符\n \t \r 空格
\S    匹配所有非空白字符
[ ]    指定范围的原子

这几个必须要记住,最好达到默写级别。记忆的时候成对记忆,\d是匹配一个0-9,那么\D 就是除了0-9以外的所有字符。
上面这几个特殊的你要不嫌麻烦,等价如下

\w    [a-zA-Z0-9_]
\W    [^a-zA-Z0-9_]
\d    [0-9]
\D    [^0-9]
\s    [ \t\n\f\r]
\S    [^ \t\n\f\r]

元字符

在使用原子的时候,发现只能够匹配一个字符,可是要匹配多个字符就出现了问题。
这个时候,我们需要借助元字符来帮我们修饰原子,实现更多的功能
元字符及功能说明

*    是代表匹配前面的一个原子,匹配0次或者任意多次前面的字符。
+    匹配一次或多次前面的一个字符
?    前面的字符可有可无【可选】 有或没有
.    更标准一些应该把点算作原子。匹配除了\n以外的所有字符
|    或者。注:它的优先级最低了。
^    必须要以抑扬符之后的字符串开始
$    必须要以$之前的字符结尾
\b    词边界
\B    非边界
{m}    有且只能出现m次
{n,m}    可以出现n到m次
{m,}    至少m次,最大次数不限制
()    改变优先级或者将某个字符串视为一个整体,匹配到的数据取出来也可以使用它

修正符

写在界定符末尾,例如/\w+/s

i    模式中的字符将同时匹配大小写字母.简称:不区分大小写
m    字符串视为多行
s    将字符串视为单行,换行符作为普通字符.
x    将模式中的空白忽略.
A    强制仅从目标字符串的开头开始匹配.
D    模式中的美元元字符仅匹配目标字符串的结尾.
U    匹配最近的字符串.

例子后期慢慢加...

相关推荐

添加新评论

全部评论:仅有一条评论

  1. 君哥

    不错哟,蛮适用的

网站状态

  • 栏目分类:49个
  • 发布文章:1512篇
  • 用户评论:729条
  • 开博至今:4070天

正则速查

[abc] 匹配中括号中的单个字符,如a或b或c
[^abc] 匹配除了a、b、c等字符的其他单个字符
[a-z] 匹配一个字符范围,如a到z
[a-zA-Z] 匹配一个字符范围,如a-z 或 A-Z
^ 匹配行的开始
$ 匹配行的结束
\A 匹配一个字符串的开始
\z 匹配一个字符串的结束
. 匹配任意单个字符
\s 匹配空白字符,如空格,TAB
\S 匹配非空白字符
\d 匹配一个数字
\D 匹配非数字
\w 匹配一个字母
\W 匹配非字母
\b 匹配字符边界
(...) 引用所有括号中的内容
(a|b) a或者b
a? 零个或1个a
a* 零个或多个a
a+ 1个或多个a
a{3} 3次重复的a
a{3,} 3次或3次以上重复的a
a{3,6} 3到6次重复的a

修正符

/g 查找所有可能的匹配
/i 不区分大小写
/m 多行匹配
/s 单行匹配
/x 忽略空白模式
/e 可执行模式,PHP专有
/A 强制从目标字符串开头匹配
/D 使用$限制结尾字符,则不允许结尾有换行
/U 只匹配最近的一个字符串;不重复匹配

最新回复

  • 夏目贵志: 我终于懂了是什么意思了!!!
  • 柳溪: 支持博主 很详细!
  • memory: 谢谢。以前没用到checkEmail,是注释掉的,所以这儿我也没...
  • 一个默默无闻的码农: function checkEmail的if里的变量写错了
  • memory: 谢谢大神鼓励。哈哈 有没想到的地方还望多多指正
  • 梦康: 感谢分享,前几天我刚接触这个命令,之前都没用到过。总结非常全面。
  • 梁兴健: Parse error: syntax error, unexp...
  • 耐火砖: 感谢博主分享,很有用
  • memory: 额。。。
  • 亚克力浴缸: 还好我不是学这些的,不然打错那个都不知道
  • memory: 哈哈。写的太2了,将就着吧。我自己看也晕了...
  • 亚克力浴缸: 看晕了,头大
  • 泽泽: 至少手机上图根本没动
  • memory: 呵呵,难道你现在看到的不是gif图?
  • 泽泽: 原文是gif图,无脑抓取也要读一读吧
  • 亚克力浴缸: 学习了 in 参数
  • asd: 感谢博主,功能已实现