php下正则表达式整理

一、正则表达式的历史背景
  1,内容深厚的正则表达式
    ^[email protected]+\\..+$ 形式
    字符串搜索与匹配的工具
  2,应用范围
    手机输入法
    Windows文件搜索
    linux 列出文件命令
    网站用户注册,如邮箱、手机号码的表单验证 
-------------------------------------------------------

二、正则表达式函数解析
  1,准备工作,在此选择 php 来学习正则表达式
  2,事先建立好一个 show() 函数
    /**
      * description: php正则表达式函数
    */
    /**
    * @name:show
    * @description : output debug
    * @param $var : input data 
    * @return void
    */

    

    function show($var = null){
      if ( empty( $var ) ) {
        echo ‘null‘;
      } elseif( is_array($var) || is_object($var) ){
        echo "<pre>";
        print_r($var);
        echo "</pre>";
      } else{
        echo $var;
      }
    }
3,php 中常用的正则表达式函数(使用最频繁),返回匹配到的次数
  (1)preg_match($pattern, $subject, [array &$matches]) 只会匹配一次
    preg_match_all($pattern, $subject, array &$matches) 匹配所有

    以下是代码实例
      $pattern = ‘/[0-9]/‘;
      $subject = ‘hdgsah7ghgsj89gsgh7faf432‘;

      $m1 = $m2 = array();

      $t1 = preg_match($pattern, $subject, $m1); //$t1 = 1
      $t2 = preg_match_all($pattern, $subject, $m2); //$t2 = 7

      show($m1); //输出一个一维数组
      echo "<hr>";
      show($m2); //输出一个二维数组

  (2)preg_replace($pattern, $replacement, $subject)
  preg_filter($pattern, $replacement, $subject)

  代码实例

    $pattern = array(‘/[0123]/‘,‘/[456]/‘,‘/[789]/‘);
    $subject = array(‘hdg‘,‘sah7‘,‘ghgsj‘,‘89gsg‘,‘h7fa‘,‘f432‘);
    $replacement = array(‘你‘,‘好‘,‘!‘);

    $str1 = preg_replace($pattern, $replacement, $subject);
    $str2 = preg_filter($pattern, $replacement, $subject);

    show( $str1 );
    echo "<hr>";
    show( $str2 );

  (3) preg_grep($pattern, array $input)将无法匹配的值过滤掉 阉割版 preg_filter()

  (4) preg_split($pattern, $subject)
    代码实例
    $pattern = ‘/[0-9]/‘;
    $subject = ‘这9是2一段3文5字‘;
    $arr = preg_split($pattern, $subject);
    show($arr);
    输出
      Array
      (
      [0] => 这
      [1] => 是
      [2] => 一段
      [3] => 文
      [4] => 字
      )
  (5)preg_quote($str)
    正则运算符转义

  (6)正则表达式总结
    a,都以preg_开头
    b,除preg_quote() 外,第一个参数都是正则表达式

    c,preg_match() 表单验证
    d,preg_replace () 非法词汇过滤等

三、模式修正
  1,概述
    界定符、原子、量词、边界控制、模式单元
  2,界定符
    表示正则表达式开始和结束的位置
    $pattern = ‘/[0-9]/‘;
    $pattern = ‘#[0-9]#‘;
    $pattern = ‘{[0-9]}‘; //在php中不推荐使用
  3, regexpal 工具
    用于调试正则表达式
  4,原子概念
    正则匹配最小单位
    可见原子:键盘输出后肉眼可见的字符
    不可见原子:换行符、回车、空格

    在匹配中文字符时,建议先转换 Unicode http://tool.chinaz.com/Tools/Unicode.aspx
  5,原子的筛选方式
    | 匹配两个或多个分支选择
    [] 匹配方括号中的任意一个原子 [789] 匹配 789 , [a-zA-Z0-9] 匹配字母和数字
    [^] 匹配方括号中的原子之外的任意字符 [^789] 匹配非 789
  6,元字符(原子的集合)
    . 匹配除换行符之外的任意字符
    \d 匹配任意一个十进制数字,即 [0-9]
    \D 匹配除数字之外的其他字符
    \s 匹配一个不可见原子 即[\f\n\r\t\v]
    \S 匹配一个可见的原子 [^\f\n\r\t\v]
    \w 匹配任意一个数字、字母、或下划线 [0-9a-zA-Z_]
    \W 匹配任意一个非数字、字母、或下划线 [^0-9a-zA-Z_]
  7,量词
    {n} 表示其前面的原子恰好出现 n 次
    {n,} 表示其前面的原子最少出现 n 次
    {n,m} 表示其前面的原子最少出现 n 次,最多出现 m 次
    * 匹配0次,1次或多次其之前的原子 即 {0,}
    + 匹配1次或多次其之前的原子 即 {1,}
    ? 匹配0次或1次其之前的原子

    举例子 5{2} ---- 55
    [a-zA-Z]{2} ---- ad1256135AW
    [\w]{4} ---- 连续出现4次字母、数字、下划线
    [\w]{4,8} ---- 4到8次字母、数字、下划线
    \d+ ---- 1到无穷大次数字出现
  8 ,边界控制
    ^ 匹配字符串开始的位置
    $ 匹配字符串结束的位置
    () 匹配其中的整体为一个原子
  9,修正模式
    贪婪匹配 匹配结果有歧义时取其长
    懒惰匹配 匹配结果有歧义时取其短 标识 U
    i 忽略英文大小写
    x 匹配过程中忽略空白 ,包括空格和制表符
    s 让元字符‘ . ‘匹配包括换行符在内的所有字符

四、正则表达式实战
  1,非空: .+
  2, 匹配一个保留两位小数的浮点数: \d+\.\d{2}$
  3, 大陆手机号: ^1(3|5|4|7|8)\d{9}
  4, email地址: ^\w+(\.\w)*@\w+(\.\w)+$
  5,url 地址: ^(https?://)?(\w+\.)+.[a-zA-Z]+$

五、正则表达式实战——正则表达式工具类

‘require‘ => ‘/.+/‘,
‘email‘ => ‘/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/‘,
‘url‘ => ‘/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\‘:+!\.#\w]*)?$/‘,
‘currency‘ => ‘/^\d+(\.\d+)?$/‘,
‘number‘ => ‘/^\d+$/‘,
‘zip‘ => ‘/^\d{6}$/‘,
‘integer‘ => ‘/^[-\+]?\d+$/‘,
‘double‘ => ‘/^[-\+]?\d+(\.\d+)?$/‘,
‘english‘ => ‘/^[A-Za-z]+$/‘,
‘qq‘ => ‘/^\d{5,11}$/‘,
‘mobile‘ => ‘/^1(3|4|5|7|8)\d{9}$/‘

时间: 2024-08-25 13:27:09

php下正则表达式整理的相关文章

常用的正则表达式整理

说明:正则表达式通常用于两种任务:1.验证,2.搜索/替换.用于验证时,通常需要在前后分别加上^和$,以匹配整个待验证字符串:搜索/替换时是否加上此限定则根据搜索的要求而定,此外,也有可能要在前后加上\b而不是^和$.此表所列的常用正则表达式,除个别外均未在前后加上任何限定,请根据需要,自行处理. 说明 正则表达式网址 (URL) [a-zA-z]+://[^\s]*IP地址  (IP Address) ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|

正则表达式整理

元字符: .            除换行符的任意字符 \            转义字符 [...]        字符集合 \d           数字:[0-9] \D           非数字[0-9] \s            空白字符 [<空格>\t\r\n\f] \S           非空白字符[^\s] \w           单词字符[A-Za-z0-9_] \W          非单词字符[^\w] 数量词: *               匹配一个字符0或多

jquery下 选择器整理

jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("div") 选择所有的div标签元素,返回div元素数组 $(".myClass") 选择使用myClass类的css的所有元素 $("*") 选择文档中的所有的元素,可以运用多种的选择方式进行

jquery下常用正则表达式整理(可直接粘贴使用)

与正则表达式做比较的方法 var _val = '1234'; var _ev = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/; //双斜杠之间写正则表达式_val.match(_ev);//返回结果为ture或false 此为作比较的方法 验证email通用正则表达式 var _ev = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$

常用正则表达式整理

/*以下为亲自验证过,备用*/ 待整理...... /*以上亲自验证过,备用*/ /*以下为网上复制过来的,未亲自验证过,拿来备用*/ 常用正则表达式大全!(例如:匹配中文.匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5]   评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹

linux下正则表达式

正则表达式 1.用du -sh /* 查看根下所有目录占用的内存是多少 2.lsof -i :22 查看22端口 3.清空文件,cat /dev/null>access_log清空一个文件 4.如果在oldboy/ett目录下在创建一个目录,那么/oldbot/ett的硬链接数是多少,为什么? 2个,因为子目录下的..是父目录的硬链接 5检测一个命令是否是内置命令:type 命令名称 Linux的多用户多任务介绍: 1.用户的身份是用UID(useridentify)和GID(groupiden

shell下正则表达式与其工具grep

一.grep相关知识 1.grep      grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 2.grep工作原理      grep有两种模式:Basic和Extend模式.     在Basic模式下,命令直接grep ,其中的?.+.{}.|.()都被解释为普通字符,如果要使用其的特殊意义,就必须

正则表达式-整理

正则表达式 正则表达式(Regular Expression )使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.正则表达式是由普通字符(所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号)以及特殊字符(称为元字符,具有特殊含义的字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 正则表达式可以用来: (1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址. (

高压力下正则表达式的性能瓶颈

最近在做公司的系统,每秒要接受网络的数据在130条左右,对过长的数据进行截取,使用的方法是: /// <summary> /// 截断字符串 /// </summary> /// <param name="maxLength">最大长度</param> /// <param name="str">原字符串</param> /// <returns></returns> p