• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 一个正则表达式,看不懂

一个正则表达式,看不懂

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了正则表达式看不懂,精通正则表达式看,正则表达式怎么看,正则表达式,正则表达式提取数字等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:一个正则表达式,看不懂
描述:

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

就是上面那个。
?=我能理解,但是外面加了开始与结束就看不懂了。


解决方案1:

来源:链接描述
正则表达式,正则表达式语法,正则表达式测试工具,在线正则表达式,在线正则表达式测试,正则表达式生成器,java正则表达式,正则表达式大全,js正则表达式,正则表达式教程,python 正则表达式,c#正则表达式,java正则表达式语法,php正则表达式,正则表达式语法大

解决方案2:

因为上来有.* 那么^似乎是多余的

解决方案3:

完全匹配

解决方案4:

就是从头到尾只能是字母和数字(至少8个),并且其中至少有一个字母和一个数字。比如它可以匹配a1234567,但不能匹配12345678或abcdefgh。

如果不加开始或结束限定,那么只要字符串中间有至少8个字母和数字的组合就可以匹配,但这个表达式要求的是从头至尾。例如,如果不加开始和结尾限定的话,它是可以匹配#a1234567或a1234567#的


对于这个^[A-Za-z\d]{8,}(?=.*[A-Za-z])(?=.*\d)$,感觉好像跟原来的是一样的,其实不然,这是一个自相矛盾的表达式。

比如字符串a1234567,原来的正则表达式^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$的匹配过程是这样的:

  1. 先匹配行起始位置,自然可以匹配成功

  2. 开始正向环视的检查,上面说过,这两个环视的功能是确认字符串中是否同时包含字母和数字,该字符串无疑是满足要求的

  3. 这里尤其注意:环视检查时所匹配到的内容不会被“吃掉”,下一步仍然从行起始位置后面开始匹配[A-Za-z\d]{8,}$,这时候当然也是可以匹配的

  4. 因此整个字符串匹配成功。

再看看修改后的表达式是如何匹配的。

  1. 先匹配行起始位置,自然可以匹配成功

  2. 再匹配[A-Za-z\d]{8,},可以匹配,此时位置指针在行尾的前面(7的后面)

  3. 开始正向环视的检查,由于整个字符串中的字符已经在第2步被匹配完,所以无法满足环视的条件,整个表达式匹配失败


上面的例子字符串正好是8个字符,那如果字符串的字符更多一些呢,比如a123456789?答案是也是不行的,因为第2步的量词是{8,}也就是说没有规定上限,它会尽量匹配,无论字符串有多少个字母+数字,都会在第2步被“吃完”,到了第3步仍然没有字符能够通过环视的检查。

那么可能你还有疑惑,我把量词限定为8会怎样?也就是说,前面我只让它匹配8个字符。很遗憾,这样也是不行的。比如用这种方式匹配a1234567b8,在第2步,它会匹配a1234567这8个字符,然后到了第3步检查环视时虽然通过了,但继续匹配最后的行结束符时却失败了,因为环视不会“吃掉”字符,匹配行结束符仍然是从b这个字符的位置上匹配的。所以我们的良苦用心无法给这个表达式任何帮助,它就是一个自相矛盾的存在,永远无法匹配成功。


上面说的应该已经比较明白了,如果有哪里不太懂的还可以问我


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 正则表达式帮忙看下正则表达式
  • 正则表达式正则表达式看不懂
  • 一句正则不懂
  • 正则表达式看不懂,求解释
  • 一个正则表达式,看不懂

相关文章

  • 2017-06-07 redisredis响应延迟时间的计算
  • 2017-06-07 (python)安装Airflow报错
  • 2017-06-07 上传回调通知,为何已经告诉服务器完成了,还一直在推送
  • 2017-06-07 视频稳定技术用到了哪些算法?
  • 2017-06-07 EloquentORM查询数据的关联扩展
  • 2017-06-07 MongoDB插入速度突然变得极慢
  • 2017-06-07 七牛,这流量是怎么统计的呢?
  • 2017-06-07 (python)importpylapas报错:NameError:name'figure'isnotdefined?
  • 2017-06-07 RepeatedDNASequences[leetcode]
  • 2017-06-07 myEclipse发布ejb3到JBoss,报错!请大家帮忙!!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • phpcurl上传文件如何像表单一样指定其name值
    • 七牛有同步文件到本地的工具吗
    • 你好,我需要七牛云64位windows的c++的动态库,最好是vs2008编译的
    • laravel关于laravel中路由的问题
    • 请教一个根据时间平均划分请求的计算方法
    • 请教分组算法问题
    • laravel迁移至lumen引起的问题
    • 用python+selenium获取弹出框出错
    • (python)如何定时从服务器下载一个文件?
    • 为什么sqlalchemy中echo会打印sql两次

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有