我个人认为,正则表达式的常规用法可以分为如下三个最基本的原则: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. amaze ui实现下拉列表

    对amaze ui ,只能说很好,很适合开发者使用,然后省略一万字. 今天记录下下拉列表的实现. 关于调用,这里不赘述了, 直接记录代码: <ul class="am-dropdown ...

  2. zw版【转发·台湾nvp系列Delphi例程】HALCON HomMat2dRotate1

    zw版[转发·台湾nvp系列Delphi例程]HALCON HomMat2dRotate1 procedure TForm1.Button1Click(Sender: TObject);var img ...

  3. redis删除单个key和多个key,ssdb会落地导致重启redis无法清除缓存

    redis删除单个key和多个key,ssdb会落地导致重启redis无法清除缓存,需要针对单个key进行删除 删除单个:del key 删除多个:redis-cli -a pass(密码) keys ...

  4. Nginx启动SSL功能

    Nginx启动SSL功能,并进行功能优化,你看这个就足够了 一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 nginx: [emerg] the &q ...

  5. corejDay1

    1.内部类: 有什么用? 1.可以访问该类定义所在作用域中的数据,包括私有数据. 2.当想定义一个回调函数而不想编写大量代码时,使用匿名内部类比较便捷. 3.内部类可以对同一个包中的其他类隐藏起来. ...

  6. Mysql优化_内置profiling性能分析工具

    如果要进行SQL的调优优化和排查,第一步是先让故障重现,但是这个并不是这一分钟有问题,下一秒就OK.一般的企业一般是DBA数据库工程师从监控里找到问题.DBA会告诉我们让我们来排查问题,那么可能很多种 ...

  7. mysql免安装版本(用批处理安装和启动)

    参考文章: http://www.cnblogs.com/niuniutry/p/3555778.html http://wenku.baidu.com/link?url=WI9Cyl5AMHOlps ...

  8. 20145321 《网络对抗技术》 Web安全基础实践

    20145321<网络对抗技术> Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? SQL注入就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的 ...

  9. Python3基础 os.path.basename 处理路径字符串,返回文件的名字

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. spring注解注入properties配置文件

    早期,如果需要通过spring读取properties文件中的配置信息,都需要在XML文件中配置文件读取方式. 基于XML的读取方式: <bean class="org.springf ...