我个人认为,正则表达式的常规用法可以分为如下三个最基本的原则:1、找谁、2、怎么找、3、找它干什么。

  接下来,我分享一下一个正则表达式分三个部分:

  原子字符

  . 匹配除换行符以外的任意字符

  \w 匹配一个字母或数字或下划线

  \s 匹配一个空白符

  \d 匹配一个数字

  \b 匹配单词的开始或结束的位置(匹配一个位置)

  ^ 匹配字符串的开始

  $ 匹配字符串的结束

  表示范围

  [] 匹配括号中的任意一个字符

  量词

  重复0次或更多次

  重复1次或更多次

  ? 重复0次或1次

  {n} 重复n次

  {n,} 重复n次或更多次

  {n,m} 重复n到m次

  反义

  \W \w取反

  \S \s取反

  \D \d取反

  \B \b取反

  [^x] 匹配除了x以为的任意一个字符

  [^abcde] 匹配除了abcde以为的任意一个字符

  分支

  | 表示分支,在[]中无效,匹配分支条件时,从左往右匹配,当匹配到某个分支时结束,不会再考虑后面的分支

  分组

  捕获

  (exp) 匹配exp,并捕获文本到自动命名的组里

  (?exp) 匹配exp,并捕获文本到名为name的组里

  (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

  零宽断言

  (?=exp) 匹配exp前面的位置

  (?<=exp) 匹配exp后面的位置

  (?!exp) 匹配后面跟的不是exp的位置

  (?

  注释

  (?#comment) 提供注释辅助阅读,不对正则产生任何影响

  反向引用

  \1 引用第一个分组子匹配

  \n 引用第n个分组子匹配

  \k 引用命名为name的分组子匹配

  懒惰模式

  *? 任意次

  +? 一次或多次

  ?? 0次或1次

  {m,n}? m-n之间

  {m,}? 至少m

  常用正则

  /^\d+$/ 非负整数

  /^[1-9]+[0-9]$/ 正整数

  /^-\d+$|0/ 非正整数

  /^-[1-9]+[0-9]$/ 负整数

  /^[\w-.]+@[\w-.]+(.[\w-]+)+$/ email地址

  <(.)>.<\/\1>|<. \/> html标签

  <[img|IMG].?src=\'|\"[\'|\"].*?[\/]?>

  提取img标签的src值。(来源:程序员)

php正则表达式的三个最基本原则分享的更多相关文章

  1. JavaScript正则表达式(三)

    正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档中使用一个正则表达式 ...

  2. perl正则表达式第三周笔记

    正则引擎的分类 正则引擎的分类 正则引擎的分类主要分两种: DFA:egrep.awk.lex.flex NFA:.NET.PHP.Perl.Ruby.Python.GNU Emacs.ed.sec. ...

  3. 第三记“晋IT”分享成长沙龙

    2014年8月17日下午4点-7点,第三期"晋IT"分享成长沙龙在太原大自然蒙特梭利幼儿园多功能厅成功举办. 8月17日下午两点.小编领先来到场地,提前探訪一下准备情况. &quo ...

  4. iOS中正则表达式的三种使用方式

    1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @“nijino_saki@163.com”: NSString *regex = @"[ ...

  5. 正则表达式(三):Unicode诸问题下篇(转)

    原文:http://www.infoq.com/cn/news/2011/04/regular-expressions-4 我们使用正则表达式,熟练掌握各种功能和结构只是手段,解决实际的问题才是真正的 ...

  6. JAVA 正则表达式的三种模式: 贪婪, 勉强和占有的讨论

    假设待处理的字符串是  xfooxxxxxxfoo 模式.*foo (贪婪模式): 模式分为子模式p1(.*)和子模式p2(foo)两个部分. 其中p1中的量词匹配方式使用默认方式(贪婪型). 匹配开 ...

  7. 最常用的~正则表达式-相关js函数知识简洁分享【新手推荐】

    一.正则表达式的创建 JS正则的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 varregObj =newRegExp("(^\s+)|(\s+ ...

  8. 关于C#委托三种调用的分享

    一.同步调用 1.同步调用会按照代码顺序来执行2.同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,造成糟糕的用户体验,这时候异步调用就很有必要了. 举个栗子 ...

  9. RegExp正则表达式(三)–js中正则表达式的定义

    在js中,RegExp正则表达式的定义有两种方式:一种是普通方式,另一种是构造函数方式.无论是那种定义正则表达式的方式,它们都会返回RegExp对象. 普通方式定义正则表达式的格式 语法: var 变 ...

随机推荐

  1. css rgba透明度变化

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. discuz完善用户资料任务不能完成的解决方法

    再来吐槽下discuz. 虽然很很很不想用discuz,但是,,,,..便利性以及各种原因,还得使用. 问题:discuz-运营-任务-完善资料,,,,,,变更部分后无法完成任务. 解决方式如下 原因 ...

  3. cf428c 模拟题

    这题说的是给了 n个数然后又 k次 的交换任意位置的 数字的机会  计算最长的连续子序列的和 这要撸  模拟整个 过程 并不能就是算最长的递增序列 如果只是 找最长的 和序列的 话 会存在 很多问题 ...

  4. BabelMap 10.0.0.5 汉化版已经发布

    新的 BabelMap 调整了用户体验的一些细节.修正了西夏语表意文字序列.修正了一些文字显示不全的问题. 请点击页面左上角连接,进入下载页面下载.

  5. jstat命令查看jvm的GC情况

    jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]  注意!!!:使用的jdk版本是jdk8. ...

  6. HTTP 超文本协议

    转载 :http://mp.weixin.qq.com/s/3d3zhksViX2NTuIssiYGJg

  7. web前端----html表单操作

    form表单 功能:表单用于向服务器传输数据,从而实现用户与Web服务器的交互 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含textarea.selec ...

  8. (四)github之Git的初始设置

    设置姓名与邮箱地址 这里的姓名和邮箱地址会用在git的提交日志之中,在github上公开git仓库时会随着提交日志一起公开. 有两种方式, 第一种,在git bash下设置 第二种, 通过直接编辑.g ...

  9. strerror函数的总结

    定义函数:char * strerror(int errnum); 函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回. 返回值:返 ...

  10. $.cookie()取值设置

    本文为博主原创,未经允许不得转载: 使用jquery.cookie.js中的cookie做了一个折叠式菜单栏,用cookie保存会话的值,其中的值为点击菜单栏时,即在cookie中 保存对应的值,保证 ...