http://buzheng.org/blog/regex-zero-width-assertion/

正则表达式里面比较高级的应用就属于零宽断言了。那么什么是零宽断言呢?拆分法从字面上分析一下,零宽,即宽带为0,意味者不会返回匹配的字符,以为匹配的是当前字符的位置。断言,就是预言、假设,意味着从此处假设存在什么情况。那么零宽断言的意思就是假定从此位置开始满足某种情况。

根据断言字符串位于当前位置的前后关系,分为正向和反向断言,根据断言肯定和否定的语气,又有正向否定断言和反向否定断言。肯定即断言存在该字符串、否定即相反的意思:存在的不是该字符串,总之概念比较绕口,下表介绍的时候顺便给出英文:

(?=X) 正向断言,假定该位置后跟的是X
zero-width positive lookahead
(?!X) 正向否定断言,假设该位置后跟的不是X
zero-width negative lookahead
(?<=X) 反向断言,假设该位置前跟的是X
zero-width positive lookbehind
(?<!X) 反向否定断言,假设该位置前跟的不是X
zero-width negative lookbehind

举例:
(?=X) 正向断言
[^s]+?(?=ing) 来匹配 having doing listing,会匹配出 hav, do, list,注意:并不会匹配出ing,因为ing是零宽断言的部分。

(?!X) 正向否定断言

一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。

如何分析需求?拆分!这就是软件设计的一般思路了。于是乎,拆分需求如下:
1,不能全部是数字
2,不能全部是字母
3,必须是数字或字母
只要能同时满足上面3个要求就可以了,写出来如下:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

分开来注释一下:
^ 匹配一行的开头位置
(?![0-9]+$) 预测该位置后面不全是数字
(?![a-zA-Z]+$) 预测该位置后面不全是字母
[0-9A-Za-z] {8,16} 由8-16位数字或这字母组成
$ 匹配行结尾位置

(?<=X) 反向断言
(?<=hell)[a-z]+ 来匹配test hellen hellas helloween,会匹配出 en, as, oween

(?<!X) 反向否定断言
[a-z]+(?<!hell)en 来匹配testen hellen hellas helloween,会匹配出testen和helloween

注:所有的案例都在UE下进行测试。

转载于:https://www.cnblogs.com/anjey/archive/2012/08/16/2642332.html

javascript 正则表达式-零宽断言相关推荐

  1. 正则表达式零宽断言详解

    在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存 ...

  2. 零宽断言 python_正则表达式-零宽断言

    [toc] 一.零宽断言-介绍 零宽断言,它匹配的内容不会提取,其作用是在一个限定位置的字符串向前或向后进行匹配查找. 1.1.应用场景 排除查找,查找不含有某段字符串的行 包含查找,查找含有某段字符 ...

  3. JAVASCRIPT 正则表达式学习--基础与零宽断言(转自司徒正美)

    元字符 ( [ { \ ^ $ | ) ? * + . 预定义的特殊字符 字符 正则 描述 \t /\t/ 制表符 \n /\n/ 制表符 \r /\r/ 回车符 \f /\f/ 换页符 \a /\a ...

  4. php 零宽断言,正则表达式之零宽断言实例详解【基于PHP】

    这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念.分类及php实现技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 ...

  5. php 正则 零宽断言,正则表达式之零宽断言实例详解_正则表达式

    这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念.分类及php实现技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 ...

  6. grep零宽断言正则表达式

    一.grep零宽断言: (匹配宽度为零,满足一定的条件/断言) 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用, ...

  7. Python正则表达式之零宽断言(4)

    文章目录 声明 | ^ $ \A \Z \b \B 分组 反向引用 注意 声明 有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言.例如 \b 表示当前位置位于一个单 ...

  8. 正则表达式之零宽断言

    介绍: 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用,用于指定一个位置,这个位置应该满足一定的条件(即断言), ...

  9. php 零宽断言,正则表达式之零宽断言实例详解

    这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念.分类及php实现技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 ...

最新文章

  1. 百度地图 点聚合_强强联合聚能网约车场景 首汽约车为百度地图“站台”
  2. 【独家】一文读懂关联分析
  3. 微信在公众号增开了新广告位 这次是在图文消息头部
  4. 【C++】写一个类重载加减乘除取余运算符
  5. java前沿技术_Java语言就业前景如何?这4个就业方向都很吃香
  6. 桌面计算机硬盘打不开,我电脑的磁盘打不开,是什么问题?
  7. 显示外部页面_前端设计-响应式页面开发基础
  8. 网络邻居无法共享解决办法
  9. caffe学习笔记(1)
  10. 屌丝giser成长记-研一篇(上)
  11. 为什么中国电气自动化工程师这么难招
  12. hive从入门到放弃(一)——初识hive
  13. Codeforces364D Ghd【随机+检验】
  14. 【RocketMQ】发送事务消息
  15. oracle查询访问记录,oracle 访问 记录
  16. SQL 校验身份证号格式
  17. JavaScript进阶 - 第9章 DOM对象,控制HTML元素
  18. 《算法竞赛入门经典》第三章思考题
  19. Linux/Centos安装oracle11超详细图文教程
  20. 重力球——重力感应器应用

热门文章

  1. oracle 韩思捷_ORACLE数据库技术实用详解:教你如何成为10g OCP
  2. server2019远程服务器ipv4地址_Windows Server 2019远程桌面服务配置和授权激活
  3. python十进制小数转二进制_python十进制和二进制的转换 (含浮点数)
  4. linux搭建hdfs
  5. java创建activity视图_java-动态创建的视图id始终为null-findviewbyid不起作用
  6. 图像处理——图像边缘检测
  7. 列宽一字符等于多少厘米_字符串匹配算法总结——BF、KMP、BM
  8. linux小菜鸟入门,《Linux菜鸟入门》初识linux基础(示例代码)
  9. burp爆破线程设置多少_多线程到底需要设置多少个线程?
  10. html表格高度适应屏幕,Table的自适应高度