码迷,mamicode.com
首页 > Web开发 > 详细

js正则先行断言,

时间:2019-07-26 01:10:27      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:遇到   一个   条件   nbsp   范围   reg   mic   str   规则   

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

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

/^(?=.*[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分钟入门那篇课程》,http://deerchao.net/tutorials/regex/regex.htm#more
  2. 也就是说?=表示,他断言他出现的位置能匹配后面的表达式,说直白一点,就是他这里做了限制,后面的的表达式必须符合标注。那这里做了什么限制了?
  3. 这个地方有点难以理解,对我来说。看个人吧。他不能匹配到字符,他是匹配了为位置,记住位置,$^这些都是在匹配位置;
  4. 完整的来讲,我在开头^紧跟着的位置,也可以理解就在开头,我发话了,后面的表达式,都配合下我演出 内容是  .*[0-9]我匹配任意字符,但是后面你们一定要给我来个数字必须有技术图片
  5. 技术图片
  6. 都说了必须有数字嘛,有了就行了。但是这个范围其实很大,离你匹配的东西差距很远,所以大规则下还有小规则;

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

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

  8. 技术图片

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

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

js正则先行断言,

标签:遇到   一个   条件   nbsp   范围   reg   mic   str   规则   

原文地址:https://www.cnblogs.com/manu-yyj/p/11247749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!