黑马程序员技术交流社区

标题: 传智PHP分享:126个常用的正则表达式分享 [打印本页]

作者: huawei    时间: 2016-5-13 19:04
标题: 传智PHP分享:126个常用的正则表达式分享
本帖最后由 沈唁 于 2017-8-11 12:54 编辑

126个常用的正则表达式分享

电子邮件:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/


变量:/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/

基于php常用正则表达式的整理汇总
1        /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/  电子邮件
2        "^\d+$"  //非负整数(正整数 + 0)
3        "^[0-9]*[1-9][0-9]*$"  //正整数
4        "^((-\d+)|(0+))$"  //非正整数(负整数 + 0)
5        "^-[0-9]*[1-9][0-9]*$"  //负整数
6        "^-?\d+$"    //整数
7        "^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)
8        "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
9        "^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0)
10        "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
11        "^(-?\d+)(\.\d+)?$"  //浮点数
12        "^[A-Za-z]+$"  //由26个英文字母组成的字符串
13        "^[A-Z]+$"  //由26个英文字母的大写组成的字符串
14        "^[a-z]+$"  //由26个英文字母的小写组成的字符串
15        "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
16        "^\w+$"  //由数字、26个英文字母或者下划线组成的字符串
17        "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址
18        "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url
19        /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
20        /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
21        "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil
22        /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码
23        "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址
24        匹配中文字符的正则表达式: [\u4e00-\u9fa5]
25        匹配双字节字符(包括汉字在内):[^\x00-\xff]
26        匹配空行的正则表达式:\n[\s| ]*\r
27        匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
28        匹配首尾空格的正则表达式:(^\s*)|(\s*$)
29        匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
30        匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
31        匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
32        匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
33        匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
34        元字符及其在正则表达式上下文中的行为:
35        \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
36        ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
37        $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
38        * 匹配前面的子表达式零次或多次。
39        + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
40        ? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
41        {n} n 是一个非负整数,匹配确定的n 次。
42        {n,} n 是一个非负整数,至少匹配n 次。
43        {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。
44        ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
45        . 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。
46        (pattern) 匹配pattern 并获取这一匹配。
47        (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
48        (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
49        (?!pattern) 负向预查,与(?=pattern)作用相反
50        x|y 匹配 x 或 y。
51        [xyz] 字符集合。
52        [^xyz] 负值字符集合。
53        [a-z] 字符范围,匹配指定范围内的任意字符。
54        [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。
55        \b 匹配一个单词边界,也就是指单词和空格间的位置。
56        \B 匹配非单词边界。
57        \cx 匹配由x指明的控制字符。
58        \d 匹配一个数字字符。等价于 [0-9]。
59        \D 匹配一个非数字字符。等价于 [^0-9]。
60        \f 匹配一个换页符。等价于 \x0c 和 \cL。



61-126个常用正则表达式,回复帖子就可以全部看到(你的每一个回帖,都能让该贴置顶一次,这样该帖就能分享给更多人了),感谢你的回帖!








作者: 土豆片炒肉灬    时间: 2016-5-16 00:42
顶顶顶!大爱黑马啊!多谢多谢!
作者: kevin2089    时间: 2016-8-27 14:58
顶顶顶顶
作者: 蓝天l8    时间: 2016-8-28 23:42
我来看看呵呵
作者: laluo    时间: 2016-10-28 22:44
感谢分享
作者: kevin_bj    时间: 2016-10-29 10:59

顶顶顶!大爱黑马啊!多谢多谢!
作者: 呼儿嘿哟    时间: 2016-10-31 17:02
顶顶顶!大爱黑马啊!多谢多谢!
作者: eddies    时间: 2016-11-3 11:57
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: 15050187118    时间: 2016-11-11 14:21
测试........
作者: 7257242    时间: 2016-11-12 11:25
顶顶顶!大爱黑马啊!多谢多谢!
作者: 396286140    时间: 2016-11-12 21:40
需要的啊 哈哈哈哈哈哈哈哈
作者: 还是童年好    时间: 2016-11-13 17:43
PHP性能如何实现全面优化?不懂,看这贴就够了!



        性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。

      如何优化PHP性能呢?

一、变量(重要)      

       1)、 变量大小,注意变量大小是节约内存的最有效手段,对于来自用户表单、数据库和文件缓存的数据都需要控制变量的大小。 因为cpu要处理的数据是来源于内存
       2)、 变量有效期,使用unset()函数注销不需要的变量是一种良好的习惯,将一些不需要的变量立即注销可提高内存的使用率。
       3)、 复制变量,尽量不要复制变量,否则就会带来1倍的内存消耗,即使复制变量也应该要立即注销原有变量。
       4)、 变量类型,初始化变量请注意其变量类型,一个变量在执行过程中最好只有一种类型状态。对于数组变量,请初始化声明,如下: $a = array();
       5)、 临时变量,是处理业务逻辑的临时存储,这些都是需要消耗内存的。如果临时变量使用结束请立即注销,特别是在一些过程式代码的执行流程中,对于一些函数,如果业务非常复杂,同样需要立即注销临时变量
       6)、 静态变量,对于一些需要由复杂业务产生的变量,如果在程序的执行过程中多次产生并使用,可考虑使用静态变量,减少程序的cpu执行次数
       7)、 变量的性能:局部变量>全局变量>类属性>未定义的变量。

二、循环(重要)

       1)、 尽量减少循环的次数。
       2)、 尽量减少循环的潜逃的层次,不要超过三层。
       3)、 避免在循环内有过多的业务逻辑。
       4)、 不要循环包含文件
       5)、 不要循环执行数据库操作。
       6)、 优先使用foreach,它比for/while效率高
       7)、 不要把 count/strlen/sizeof 放到 for 循环的条件语句中 For($i=0,$count=count($array);$i<$count;$i++){} 不要使用for($i=0;$i<count($array);$i++){};
       8)、 for($i=$total;$i>0;$i–){}性能好于for($i=0;$i<$total;$–){}
       9)、 保持循环体内的业务逻辑清晰

三、 函数(重要)

   
本帖隐藏的内容

1)、 函数职责清晰,一个函数只干一件事,不要杂揉过多的业务逻辑
      2)、 函数代码体不要超过20行,反之,考虑拆分。
      3)、 优先使用php内置函数
      4)、 常量与函数同时能干一件事,优先使用常量。
               例如:
                  · phpversion() < PHP_VERSION
                  · get_class() < __CLASS__
                  · is_null() < NULL ===
      5)、 echo 的性能好于print,输入多个变量的时候用echo $str,$str1,不用.连接符
      6)、 $_SERVER[REQUEST_TIME]替换time();
      7)、 字符串替换strtr()->str_replace()->preg_replace()->epreg();
      8)、 发挥trim最大功效,替换substr。$filepath=trim($filename,’/’).’/’;
      9)、Isset/empty 虽然两个函数功能有所差异,但在同样的情况下推荐使用 empty()
    10)、isfile/file_exist 两个函数的功能有所不同,file_exist既可判断文件是否存在,也可以判断目录是否存在,在同样的情况下推荐使用is_file



四、文件(重要)

本帖隐藏的内容

1)、 减少文件包含数,减少磁盘 IO
       2)、 使用完整路径,或者容易转换的相对路径。避免在 include_path 查找
       3)、 文件的代码行数不要超过 2000 行
       4)、Require_once/include_once 效率低于 require/include, 需要额外的去查看系统是否已经调用过这个文件. 因为它们在一个 opcode 缓存下的调用非常慢
       5)、程序执行文件用 requie/require_once,缓存文件用include/include_once。Include 效率好于 require
       6)、优化 spl 中的文件自动加载机制,可参靠 yii
       7)、类库文件加载,是否考虑类是否已经实例化,可考虑采用设计模式之单例模式
       8)、文件读写的并发性



五、面向对象(重要)

本帖隐藏的内容

1)、 控制实例的创建的数量
       2)、 优先使用常量、类常量
       3)、 优先例用静态变量,静态属性
       4)、 类的结构合理
       5)、 面象接口编程
       6)、 封装变化点
       7)、 依赖于抽象,不依赖于细节
       8)、 优先使用静态成员
       9)、 类的接口清晰稳定,类的职责单一,类与类的通信合理
     10)、 使用常量的好处 编译时解析,没有额外开销 杂凑表更小,所以内部查找更快 类常量仅存在于特定「命名空间」,所以杂凑名更短 代码更干净,使除错更方便



六、字符串

        1)、 用单引号替代双引号引用字符串;避免检索字符串中的变量

七、运算

       1)、 用 i+=1 代替i=i+1。符合c/c++的习惯,效率还高
       2)、 ++$i 的效率高于++$i,–$i 同理[/hide]

八、数组

      1)、 多维数组尽量不要循环嵌套赋值;
      2)、 使用$array[‘name’]方式访问数组,禁止$array[name]/$array[“name”]

九、判断(重要)

本帖隐藏的内容

1)、 逻辑判断请优先使用switch 的方式,对于业务逻辑相对较多的情况请选择if/else,提高代码的可读性
     2)、 尽量控制if/else判断的个数,如果太多请考虑功能优化或代码优化
     3)、 尽量使用恒等用于比较判断,恒等的效率高于等于,而且还能避免一些类型强制转换的错误
     4)、 if/else与_&&,单条语句判断请选择&&的形式, &&的效率高于if/else,如下 :
                if ($a == 1) {
                    $b = 2;
                 }
               可选择为($a == 1) && $b = 2;



十、缓存

      1)、 使用php加速器,缓冲opcode
      2)、 例用memcache/nosql
      3)、 使用内存数据库、
      4)、 使用文件缓存
      5)、 缓冲功能

十一、其它

     1)、 少用@符号,严重影响性能
     2)、 适时关闭远程资源连接如数据库,ftp、socket等,适时的清理这些资源

十二、 数据库优化(重要)

本帖隐藏的内容

1)、 合理的商业需情
     2)、 数据库 schema 架构优化
     3)、 垂直与水平分库分表
     4)、 索引优化,查询优化
     5)、 第三方开源检索工具(sphinx)
     6)、 主从数据库服务器的使用。
     详情可查看传智PHP公开视频《大型网站优化核心技术-mysql》



十三、 前端优化

     1)、合理的 html 结构
     2)、合理 html 与css 的同时,考虑 Css 设计合理,减少 http 请求
     3)、合理 html 与java script 的同时,考虑拆分是否合理,减少 http 请求
     4)、优化 java script 代码,让用户有良好的体验
     5)、根据 http 协议,优化高并发请求

十四、性能检测工具(重要)

   
本帖隐藏的内容

只要在百度上搜索“xxx如何检网站性能”即可。
     1)、Web Server
     2)、ab
     3)、http_load
     4)、PHP
     5)、apd
     6)、xdebug
     7)、Mysql
     8)、explain
     9)、profiler
作者: 林子夕    时间: 2016-11-14 14:07
顶顶。。。。。。。。。。。。。。。。。
作者: 小小海    时间: 2016-11-15 10:40
lw934233tgrgf
作者: 八千岁白菜    时间: 2016-11-16 20:42
阿哩哩阿哩哩俺俩李丽莉
作者: 时光独白    时间: 2016-11-17 10:03
大三的撒旦撒旦撒大声大声道
作者: yaosutong    时间: 2016-11-17 14:27
好好好好好好好好好好好好
作者: jason_QS    时间: 2016-11-19 13:44
正则表达式
作者: 夜歌行    时间: 2016-11-20 16:45
afsddddddddddddddddd
作者: Caesar乄大帝    时间: 2016-11-22 00:47
顶顶顶顶顶顶顶顶顶顶
作者: ysp110    时间: 2016-11-22 12:38
这个好啊!喜欢!
作者: 梦醒;人亦醉    时间: 2016-11-22 14:21

一到关键时刻就需要回复
作者: qq332984152    时间: 2016-11-23 01:28
大苏打大撒旦啊大
作者: wf892599245    时间: 2016-11-23 09:58
66666666666666666666666
作者: 闫富丽    时间: 2016-12-3 15:00
126个常用的正则表达式
作者: 叶_黑马    时间: 2016-12-5 22:24
顶顶顶!大爱黑马啊!多谢多谢!
作者: 邢航    时间: 2016-12-6 08:48
PHP产生不重复随机数的5个方法总结
作者: Mini洋    时间: 2016-12-6 16:42
学习学习学习学习
作者: lwb    时间: 2016-12-6 18:08
继续努力 加油。。。。。。。
作者: sun649936757    时间: 2016-12-8 11:46
大撒啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: yuren    时间: 2016-12-14 13:42
好好学习,天天向上
作者: 肖肖肖    时间: 2016-12-18 22:03
谢谢分享!!!
作者: 肖肖肖    时间: 2016-12-18 22:07
谢谢分享!!!
作者: 290422624    时间: 2016-12-22 17:30
跟着大神打天下
作者: fanphp    时间: 2016-12-23 12:44
谢谢楼主分享
作者: lsk1314    时间: 2016-12-26 11:31
sdadsadascxzczV在VC下班
作者: kokocool    时间: 2016-12-28 16:11
非常有用,值得支持
作者: 赵先生    时间: 2016-12-28 23:48
回帖拿来用下!!!!!!!!1
作者: VC丶万人敬仰    时间: 2017-1-4 10:30
666666666666666666666
作者: 问题先生    时间: 2017-1-15 20:29
学习PHP中
作者: great_zhi    时间: 2017-1-19 22:31
谢谢分享!!!!!!!!!!!!
作者: kukulu    时间: 2017-1-31 23:05
61-126个常用正则表达式
作者: 707621521    时间: 2017-2-6 15:33
感谢楼主,以后可以直接使用了
作者: 1317181388    时间: 2017-2-7 03:57
感谢楼主分享
作者: sunshine1992    时间: 2017-2-10 11:29
哈哈哈哈哈啊
作者: fjdaslfjk    时间: 2017-2-16 14:45
126个常用的正则表达式分享
作者: 用户名不得小    时间: 2017-2-17 21:49
PHP高手干货分享:要提高PHP效率,必看的50个细节  PHP高手干货分享:要提高PHP效率,必看的50个细节  PHP高手干货分享:要提高PHP效率,必看的50个细节  
作者: 邓燮    时间: 2017-2-17 23:30
顶顶顶!大爱黑马啊!多谢多谢!
作者: 打小我就行    时间: 2017-2-22 10:18
{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}{:8_512:}
作者: cy0413    时间: 2017-2-27 12:31
88888888888888888888888888888888888
作者: n15281800512    时间: 2017-3-4 23:17
00000000000000000
作者: vcflyfeel    时间: 2017-3-10 12:05
1111111111111111111111
作者: zenghua    时间: 2017-3-11 13:10
顶顶顶顶
作者: Overflow    时间: 2017-3-12 17:52
1111111111111111111
作者: 小猴儿不听话    时间: 2017-4-5 19:01
大赞,收藏了
作者: 今天吃什么    时间: 2017-4-6 13:21
正则表达式。
作者: a19911126123    时间: 2017-4-9 12:53
感谢,来看看。

作者: a19911126123    时间: 2017-4-9 12:55
谢谢楼主

作者: aooa    时间: 2017-4-10 00:08
支持一下
作者: 疯子程序员    时间: 2017-4-21 09:07
sdddddddddddddddddddddddddddddddddddddddddddddddd
作者: 剑客星辰    时间: 2017-4-30 10:48
33333333333333333
作者: followyounger11    时间: 2017-5-11 19:17
很好的东西
作者: 瞬间回忆    时间: 2017-5-24 17:13
126个常用的正则表达式分享
作者: thinkJUN    时间: 2017-6-26 14:58
非常感谢

作者: 这,些·年。    时间: 2017-7-3 14:59
谢谢分享
作者: a1long1092    时间: 2017-7-11 12:01
阿斯大幅反攻365476456456456456
作者: 且行且珍惜    时间: 2017-7-18 11:39
好好学习
作者: 且行且珍惜    时间: 2017-7-18 11:40
哈给你说在县城讲师不正弦函数大富科技的数
作者: 且行且珍惜    时间: 2017-7-18 11:41
和数据库自动化妈说
作者: 且行且珍惜    时间: 2017-7-18 11:41
暂行规定好成绩阿数组变成早上按时打卡
作者: 且行且珍惜    时间: 2017-7-18 11:42
明尼苏达好几款电脑手机
作者: wtx    时间: 2017-7-25 22:14
谢谢分享,赞一个
作者: Quren    时间: 2017-7-26 09:57
看看阿卡丽a
作者: Blakes    时间: 2017-8-4 18:48
6666666666
作者: limingyue    时间: 2017-8-5 15:13
cvzcvxcvzxczxbczxcbzx
作者: lvyinhong    时间: 2017-8-9 12:13
sdasdaaaaaaaaaaaaada
作者: zhangh    时间: 2017-8-14 11:53
感谢分享!!!!!!!!
作者: 13661526126    时间: 2017-9-26 17:17
又来看看 啊啊 啊啊 不错啊
作者: lomeixiok    时间: 2017-9-26 19:17
多多学习
作者: ningjian    时间: 2017-10-7 19:48
来学习了
作者: mvpicy    时间: 2017-10-7 21:24

顶顶顶顶顶顶顶顶顶顶
作者: 燕粤    时间: 2017-10-25 11:50
我会好好学习的,谢谢
作者: 随风521    时间: 2017-11-6 15:31
好好学习啊
作者: 101大哥    时间: 2018-1-4 10:54
很不错 很实用 收藏了
作者: 96年的仙人掌    时间: 2018-5-8 17:38
还有65个aaaaa
作者: wegochen    时间: 2018-7-1 22:50
这么全,牛啊
作者: yuyongting2001    时间: 2018-7-5 21:06
值字符范围,匹配任何不在指定范围内的任意字符
作者: nobita1995    时间: 2018-8-20 21:31
不错很喜欢。
作者: uuuqqq    时间: 2018-10-7 07:44
神啊,终于让我找到了!

作者: dzxlsxk    时间: 2018-11-23 14:54
谢谢
作者: tonysun920    时间: 2019-11-11 07:17
不错的分享,学习一下
作者: 珍惜眼前    时间: 2021-11-1 14:11
顶顶顶顶顶顶顶
作者: mdk333    时间: 2022-8-16 22:47
126个常用的正则表达式分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2