一、正则表达式的历史背景
  1,内容深厚的正则表达式
    ^.+@.+\\..+$ 形式
    字符串搜索与匹配的工具
  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}$/'

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

  1. python正则表达式整理

    正则表达式在处理字符串时很大的作用,爬虫中也经常用到,下面就将一些常用正则表达式做一整理记录,方便以后查看. ^d   表示匹配以d开头的字符串 .      表示匹配任意字符串 *     表示前面 ...

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

    与正则表达式做比较的方法 var _val = '1234'; var _ev = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z] ...

  3. [转].NET进阶系列之一:C#正则表达式整理备忘

    本文转自:http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html 有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就 ...

  4. .NET进阶系列之一:C#正则表达式整理备忘

    有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到 好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的 ...

  5. 常用JavaScript正则表达式整理

    在表单验证中,正则表达式书写起来特别繁琐,本文整理了15个常用的JavaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份证号.URL地址. IP ...

  6. .net 中常用的正则表达式整理

    相信很多伙伴都跟我一样有关于正则表达式的爱和恨,怎么说呢? 因为正则表达式规则繁多且复杂,想一个一个学 全部精通,需要耗费很长时间和精力, 但是我们用的地方并不是很多,所以我觉得这类东西需要做成类似工 ...

  7. linux下正则表达式学习

    下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为: 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 " ...

  8. Linux基础-正则表达式整理---------------grep、sed、awk

    目录:    Ⅰ:正则表达式    Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...

  9. 正则表达式 整理(\w \s \d 点 贪婪匹配 非贪婪匹配 * + ? {} | [] ^ $ \b 单词边界 分组、re.findall()、re.split()、re.search()、re.match()、re.compile()、re.sub())

    re.findall  匹配到正则表达式的字符,匹配到的每个字符存入一个列表,返回一个匹配到的所有字符列表 一. 匹配单个字符 import re # \w 匹配所有字母.数字.下划线 re.find ...

随机推荐

  1. 属性"XmlFileName"的代码生成失败

    属性"XmlFileName"的代码生成失败.错误是:"未将对象引用设置到对象实例" 解决:   控件修改造成,关闭打开页面,重新生成

  2. IntelliJ IDEA中创建并运行scala应用程序

    1.安装scala插件 2.创建scala项目 下载scala SDK,如果你已经下载了,选择你所下载的版本,点击OK

  3. Hello China操作系统STM32移植指南(一)

    Hello China操作系统移植指南 首先说明一下,为了适应更多的文化背景,对Hello China操作系统的名字做了修改,修改为"Hello X",或者连接在一起,写为&quo ...

  4. HDU 3756 Dome of Circus

    不会做,参见别人的程序: /* 底面为xy平面和轴为z轴的圆锥,给定一些点,使得圆锥覆盖所有点并且体积最小 点都可以投射到xz平面,问题转换为确定一条直线(交x,z与正半轴)使得与x的截距r 和与z轴 ...

  5. java.lang.class.getResource

    静态块,在项目启动的时候就执行,是主动执行的. 静态方法,  是被动执行的,需要被调用才执行. static{         try {             String path = Conf ...

  6. D - 金樽清酒斗十千(搜索dfs)

    D - 金樽清酒斗十千 Time Limit:2000MS     Memory Limit:524288KB     64bit IO Format:%I64d & %I64u Submit ...

  7. word中创建文本框

    word中创建文本框         在插入中点击"文本框"选项卡,例如以下图所看到的:        手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...

  8. [译]Stairway to Integration Services Level 15 – SSIS 参数回顾

    介绍 在本文中我们会研究SSIS变量姐妹: SSIS 变量. 我们会演示参数配置,通过包参数管理动态属性值,然后会演示SSIS包执行的时候参数怎么被配置的. SSIS Parameters 101 S ...

  9. Linux输入子系统(Input Subsystem)

    Linux输入子系统(Input Subsystem) http://blog.csdn.net/lbmygf/article/details/7360084 input子系统分析  http://b ...

  10. 杭电oj An easy problem

    </pre><h1 style="color: rgb(26, 92, 200);">An easy problem</h1><stron ...