加入收藏 | 设为首页 | 会员中心 | 我要投稿 濮阳站长网 (https://www.0393zz.cn/)- 专属主机、数据湖、操作系统、媒体智能、数据分析!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php正则表达式的介绍

发布时间:2022-07-26 10:12:30 所属栏目:PHP教程 来源:互联网
导读:今天看一个教程中有写了一些正则表达式用法,里面主要讲到了正则对字符的分割、匹配、查找、替换及一些入门知识与常用实例,所以整理过来与大家分享。 1.正则表达式的介绍和作用。 01.什么是正则表达式? 正则表达式(英语:Regular Expression、regex或rege
  今天看一个教程中有写了一些正则表达式用法,里面主要讲到了正则对字符的分割、匹配、查找、替换及一些入门知识与常用实例,所以整理过来与大家分享。
 
  1.正则表达式的介绍和作用。
 
  01.什么是正则表达式?
 
  正则表达式(英语:Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。
 
  规则语法
 
  02.主要作用:分割、匹配、查找、替换。
 
  表达式 匹配
 
  /^s*$/  匹配空行。
 
  /d{2}-d{5}/  验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
 
  /<s*(S+)(s[^>]*)?>[sS]*<s*/1s*>/  匹配 HTML 标记。
 
  2.PHP中两个常用的正则函数。
 
  preg_match 正则函数,以perl预言为基础。(比较效率,需要自定义一个开始结束符。)
 
  ereg 正则函数,以POSIX为基础(Uniox、Script)。
 
  3.正则表达式中包括的元素。
 
  01.原子(普通字符:a-z A-Z 0-9、原子表、转义字符)。
 
  02.原子符(有特殊功能的字符)。
 
  03.模式修正符(系统内置部分模块,类似函数)。
 
  4.正则表达式中的“原子”.
 
  01.a-z A-Z _ 0-9   //最常见的字符。
 
  02.(abc) (skd)   //用括号包含起来的单元符号。
 
  03.[abcs] [^abd]   //贪婪匹配,用方括号包含的源自表,原子表中^代表排除或者相反内容。
 
  04.转义字符(区分大小写)
 
  d 包含所有数字 == [0-9]。
 
  D 非包含所有数字 == [^0-9]。
 
  w 包含所有英文字符 == [a-zA-Z_0-9]。
 
  W 非包含所有英文字符&数字,用来匹配特殊符号 == [^a-zA-Z_0-9]。
 
  s 包含空白区域如回车、换行、分页符 == [fnr]。
 
  元字符
 
  *  匹配前一个内容的0次1次或多次
 
  .  匹配内容的0次1次或多次,但不包含回车换行
 
  + 匹配前一个内容的1次或多次
 
  ?匹配前一个内容的0次或1次
 
  |  选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配)
 
  ^  匹配字符串首部内容
 
  $  匹配字符串尾部内容
 
  b 匹配单词边界,边界可以是空格或者特殊符合
 
  B 匹配除带单词边界意外内容
 
  {m} 匹配前一个内容的重复次数为M次
 
  {m,} 匹配前一个内容的重复次数大于等于M次
 
  {m,n} 匹配前一个内容的重复次数M次到N次
 
  ( ) 合并整体匹配,并放入内存,可使用1 2…依次获取
 
  实例代码如下:
 
  <?php
  $mode = "#test#";   //这里可以用以上原子表进行匹配。
  $str = "sdfsstestdf";
  if (preg_match($mode, $str, $end)) {   //mode正则模块、str正则内容、end正则结果,以数组输出。
   echo "匹配成功" . $end[0];
  } else {
   echo "匹配失败";
  }
  ?>
  常用正则
 
  * 1、 ^S+[a-z A-Z]$ 不能为空 不能有空格 只能是英文字母
 
  * 2、 S{6,} 不能为空 六位以上
 
  * 3、 ^d+$ 不能有空格 不能非数字
 
  * 4、 (.*)(.jpg|.bmp)$ 只能是jpg和bmp格式
 
  * 5、 ^d{4}-d{1,2}-d{1,2}$ 只能是2004-10-22格式
 
  * 6、 ^0$ 至少选一项
 
  * 7、 ^0{2,}$ 至少选两项
 
  * 8、 ^[s|S]{20,}$ 不能为空 二十字以上
 
  * 9、 ^+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(.|-))+[a-z]{2,6}$邮件
 
  * 10、 w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*([,;]s*w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*)* 输入多个地址用逗号或空格分隔邮件
 
  * 11、 ^(([0-9]+))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628
 
  * 12、 ^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+(,[a-z A-Z 0-9 _]+@[a-z A-Z
 
  0-9 _]+(.[a-z A-Z 0-9 _]+)+)*$
 
  * 只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件
 
  * 13 ^w+@w+(.w+)+(,w+@w+(.w+)+)*$上面表达式也可以写成这样子,更精练。
 
  14 ^w+((-w+)|(.w+))*@w+((.|-)w+)*.w+$ [/size]
 
  匹配中文字符的正则表达式: [u4e00-u9fa5]

(编辑:濮阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读