建立个人品牌,把你的名字变成钱 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

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个
  • 发布文章:1537篇
  • 用户评论:773条
  • 开博至今:4163天

正则速查

[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: 没测试过...
  • 欧文斯: 对于多个 IP 段呢?比如超过 1000 个 IP 段,匹配速度...
  • 广州网站建设: 了解了,博客的通配符HTTPS证书
  • memory: https://medoo.lvtao.net/1.2/doc....
  • 贾彦东: medoo 在select的时候如何使用sum 比如 sel...
  • memory: 纯PHP文件末尾可以没有?>,你把报错信息发我一下。
  • bigwit: 因为七牛云的免费配额不能https,索性传到自己的vps上去算了...
  • bigwit: 我直接使用,报错啊,方便发我一份吗?
  • memory: 是完整的。这个就是一个简单的上传,你可以自己写个类似的也不难的。
  • bigwit: up.php是不是不完整,刚好我也有这样的需求,麻烦你看看
  • 广州网站建设: 学习了,已经收藏起来了
  • memory: 那就改一下 Widget_Stat 这个插件。增加个方法即可。
  • 梁兴健: 文章总浏览量可以有吗
  • memory: 怪我,写的太差。。。不易懂,,,我的错
  • 善行法脉--改变财运: 你是技术大牛。这个真的看不懂
  • memory: 这个太尴尬了,哈哈,,,那是10年的时候刚接触PHP写的一个类。...
  • 梦游者: //website : http://www.lvtao.ne...