javascript 正则表达式-零宽断言
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 正则表达式-零宽断言相关推荐
- 正则表达式零宽断言详解
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存 ...
- 零宽断言 python_正则表达式-零宽断言
[toc] 一.零宽断言-介绍 零宽断言,它匹配的内容不会提取,其作用是在一个限定位置的字符串向前或向后进行匹配查找. 1.1.应用场景 排除查找,查找不含有某段字符串的行 包含查找,查找含有某段字符 ...
- JAVASCRIPT 正则表达式学习--基础与零宽断言(转自司徒正美)
元字符 ( [ { \ ^ $ | ) ? * + . 预定义的特殊字符 字符 正则 描述 \t /\t/ 制表符 \n /\n/ 制表符 \r /\r/ 回车符 \f /\f/ 换页符 \a /\a ...
- php 零宽断言,正则表达式之零宽断言实例详解【基于PHP】
这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念.分类及php实现技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 ...
- php 正则 零宽断言,正则表达式之零宽断言实例详解_正则表达式
这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念.分类及php实现技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 ...
- grep零宽断言正则表达式
一.grep零宽断言: (匹配宽度为零,满足一定的条件/断言) 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用, ...
- Python正则表达式之零宽断言(4)
文章目录 声明 | ^ $ \A \Z \b \B 分组 反向引用 注意 声明 有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言.例如 \b 表示当前位置位于一个单 ...
- 正则表达式之零宽断言
介绍: 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用,用于指定一个位置,这个位置应该满足一定的条件(即断言), ...
- php 零宽断言,正则表达式之零宽断言实例详解
这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念.分类及php实现技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 ...
最新文章
- 百度地图 点聚合_强强联合聚能网约车场景 首汽约车为百度地图“站台”
- 【独家】一文读懂关联分析
- 微信在公众号增开了新广告位 这次是在图文消息头部
- 【C++】写一个类重载加减乘除取余运算符
- java前沿技术_Java语言就业前景如何?这4个就业方向都很吃香
- 桌面计算机硬盘打不开,我电脑的磁盘打不开,是什么问题?
- 显示外部页面_前端设计-响应式页面开发基础
- 网络邻居无法共享解决办法
- caffe学习笔记(1)
- 屌丝giser成长记-研一篇(上)
- 为什么中国电气自动化工程师这么难招
- hive从入门到放弃(一)——初识hive
- Codeforces364D Ghd【随机+检验】
- 【RocketMQ】发送事务消息
- oracle查询访问记录,oracle 访问 记录
- SQL 校验身份证号格式
- JavaScript进阶 - 第9章 DOM对象,控制HTML元素
- 《算法竞赛入门经典》第三章思考题
- Linux/Centos安装oracle11超详细图文教程
- 重力球——重力感应器应用
热门文章
- oracle 韩思捷_ORACLE数据库技术实用详解:教你如何成为10g OCP
- server2019远程服务器ipv4地址_Windows Server 2019远程桌面服务配置和授权激活
- python十进制小数转二进制_python十进制和二进制的转换 (含浮点数)
- linux搭建hdfs
- java创建activity视图_java-动态创建的视图id始终为null-findviewbyid不起作用
- 图像处理——图像边缘检测
- 列宽一字符等于多少厘米_字符串匹配算法总结——BF、KMP、BM
- linux小菜鸟入门,《Linux菜鸟入门》初识linux基础(示例代码)
- burp爆破线程设置多少_多线程到底需要设置多少个线程?
- html表格高度适应屏幕,Table的自适应高度