博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式中的?=,?!,?<=,?<!(预查)解释小栗子
阅读量:4311 次
发布时间:2019-06-06

本文共 1447 字,大约阅读时间需要 4 分钟。

          

 

                        之前在学正则表达式的时候学的并不是很透彻

  感觉看看元字符(元字符要用 \ 转义),限定符(^开头   $结尾),   前面写个范围[a-z],在后面写个{n,}能匹配就行了

          当时的自己

                                                            

  然而昨天我参加了个线上的笔试我发现这并不够,

  让我写一个正则,匹配密码,切密码必须有数字,字母,符号 的组合  

    我蒙蔽了。    后来上网上去找相关的帖子,发现我没看懂    其中的 ?!是啥意思。

          笔试后的我

 

  发现网上解释的也很少,我就去一个权威一点的网站,重新学习了一下正则,下面就是我感觉自己不足,需要补充的知识,如果你还想了解更多关于 正则表达式   --->

 

下面是这几个元字符的用法  (为啥那么长的也叫做元字符???  )  算了也不是很重要 ,就不就结了    如果哪位大哥知道 可以告诉我

  

 

?            将?跟在其他限定符(*,+,?,{n},{n,},{n,m})后面 ,将匹配模式变成非贪婪模式 

        就是只匹配能匹配的最少的内容  如 {n,}?  就只匹配n个   

 

(pattern)      这就是分组匹配,把每个被括号里的正则匹配出来的内容,当做一个组,存在Matches

      集合中,js可以配合 replace使用 $1,$2....分别代表各个组匹配出的内容,

   

 

 

(?:pattern)    匹配patttern的内容,但是不会作为分组使用,即不会被存在Matches集合中

      配合 | 可以实现更简易的  或操作  

  str

 

不使用   ?:  进行匹配  

匹配结果

 

replace替换  (从这里看出 分组存在)

 

当更改   正则表达式  使用  ?:    可以发现匹配出的结果都是相同的,不同的是在替换的时候$1并不存在,这里把$1当成字符串了

 

 (?=pattern)  正向肯定预查(look ahead positive assert)[预览,积极的断言]

        在任何匹配pattern的字符串开始处,匹配查找字符串,这是一个非获取匹配

         预查不消耗字符串

 

 (?!pattern)  正向否定预查(negative assert)[消极的 断言]

         在任何匹配的pattern 的字符串开始处匹配字符串,同样是一个非捕获匹配

        同样预查不消耗字符串

 

var reg = /window(?=7|8|10)/g;    //可以匹配出    window7/window8/window10    中的window    但是不能匹配出window9中的window

 

 

var reg = /window(?!7|8|10)/g;    //就不能匹配出  window7/window8/window10    能匹配出除了  window9等等等

 

 

(?<=pattern)  反向肯定预查 与正向的功能基本相同,就是换了预查的方向 查看前面

        仍然是预查,不消耗字符串

 

 

(?<!pattern)  反向否定预查  同样预查不消耗字符串,

 

转载于:https://www.cnblogs.com/96weibin/p/8718204.html

你可能感兴趣的文章
CentOS 7 安装配置带用户认证的squid代理服务器
查看>>
[中国寒龙出品]VB程序设计视频教程第二课“对象”
查看>>
PHP中模拟JSONArray
查看>>
<c:out> 标签与 EL表达式 ${} 区别
查看>>
mssql sqlserver in 关键字在值为null的应用举例
查看>>
终审报告
查看>>
Oracle表格建立
查看>>
【leetcode】Course Schedule(middle)☆
查看>>
转:slf4j-api、slf4j-log4j12、log4j之间关系
查看>>
密钥对连接
查看>>
496. Next Greater Element I
查看>>
mvc Area(区域)相关技术
查看>>
RESTful架构理解
查看>>
<html>
查看>>
CBitmap加载图像
查看>>
Hibernate初探之单表映射——jar包的导入
查看>>
杨辉三角
查看>>
Atcoder4105 Same Integers(模拟)
查看>>
android 特殊符号开头的联系人归并至“#”下
查看>>
Windows 7的网络发现不能启用
查看>>