博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js正则先行断言,
阅读量:4332 次
发布时间:2019-06-06

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

引子,之前学的正则大多都是比较死板的一个扣一个,有时候遇到难点的又是网上抄袭,很费事,费力。晚上无聊学习下正则。

首先看个例子,匹配一个密码,但是必须有字母和数字,这是网上一个比较常见的案列;

/^(?=.*[0-9])(?=.*[a-z])[0-9A-Za-z]{6,12}$/
  1. 首先看?=这个代表什么,(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。这里引自《正则30分钟入门那篇课程》,;
  2. 也就是说?=表示,他断言他出现的位置能匹配后面的表达式,说直白一点,就是他这里做了限制,后面的的表达式必须符合标注。那这里做了什么限制了?
  3. 这个地方有点难以理解,对我来说。看个人吧。他不能匹配到字符,他是匹配了为位置,记住位置,$^这些都是在匹配位置;
  4. 完整的来讲,我在开头^紧跟着的位置,也可以理解就在开头,我发话了,后面的表达式,都配合下我演出 内容是  .*[0-9]我匹配任意字符,但是后面你们一定要给我来个数字必须有
  5. 都说了必须有数字嘛,有了就行了。但是这个范围其实很大,离你匹配的东西差距很远,所以大规则下还有小规则;

  6. [0-9A-Za-z]{6,12}$这是小规则,在满足大规则的前提下,我还具体约束一下。老大说了任意字符都匹配有字母和数字就行,但是我这里必须匹配字母数字,还有个数要求。这是具体匹配。来看个例子,

    老大说了,要满足他的条件,我想在后面加个.com看看行不行,形如这种格式

  7. 这样是不行的老大匹配的是位置,满足条件。你这是具体的东西啊,这里一定要理清位置,和具体字符的关系。.com是实际要匹配的。那怎样才行了?

  8. 我现在写的表达式满足老大的意思了吧,
  9.  这样就行了,前面的断言要满足,后面匹配实际的字符也要满足,一旦有冲突,就会匹配不了。

转载于:https://www.cnblogs.com/manu-yyj/p/11247749.html

你可能感兴趣的文章
[置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
查看>>
BABOK - 需求分析(Requirements Analysis)概述
查看>>
第43条:掌握GCD及操作队列的使用时机
查看>>
Windows autoKeras的下载与安装连接
查看>>
CMU Bomblab 答案
查看>>
微信支付之异步通知签名错误
查看>>
2016 - 1 -17 GCD学习总结
查看>>
linux安装php-redis扩展(转)
查看>>
Vue集成微信开发趟坑:公众号以及JSSDK相关
查看>>
技术分析淘宝的超卖宝贝
查看>>
i++和++1
查看>>
react.js
查看>>
P1313 计算系数
查看>>
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>