• 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

佚名通过本文主要向大家介绍了正则表达式,正则表达式提取数字,数字 正则表达式,html正则表达式,java正则表达式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:正则:一个表达式跟预期的结果不一样
描述:

想用正则来判断一个字符串等式成立。
用来测试的式子是

/^(x+)(x+)+ % \2 = \1$/.test("xxxx % xx = x")

期望结果是false,但在三大浏览器上运行都是true。
一步步排除,发现如下奇怪结果

/^(x{1}){1}(x+){2} % \2 = \1$/.test("xxxx % xx = x")
true
/^(x{1}){1}(x{2}){2} % \2 = \1$/.test("xxxx % xx = x")
false

明明\2是xx,xx的n倍不可能是xxx。可是写成x+就可以


解决方案1:

第一个(x+)和第二个(x+)配置的长度可能不一样,比如下面这句话的结果你能想到么?

"xxxx".replace(/^(x+)(x+)$/, "$1_$2")
// => xxx_x

可以看出来,两个 (x+) 都采用了贪婪匹配,第 1 个 (x+) 直接匹配了 3 个 x(因为得留一个给第 2 个 (x+) 匹配,不然就匹配不成功了)。

如果你想两个 (x+) 匹配一样的东西,那你的正则表达式应该改一下

/^(x+)(\1)+ % \2 = \1$/.test("xxxx % xx = x")
// false

/^(x+)(\1)+ % \2 = \1$/.test("xxxx % xx = xx")
// true


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

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

  • java正则表达式语法关于Java正则表达式的问题
  • 正则表达式任意字符匹配不满足某个条件的任意字符
  • 正则表达式PHP正则表达式问题?
  • (python)正则表达式中,如果匹配到的字符串后一半刚好是下一个匹配字符串的前一半,怎么实现?
  • 正则表达式求个简单的正则表达式
  • 请问,正则表达式如何正确的在匹配内容中间插入换行符\n\r\n\r
  • 正则表达式正则表达式:如何在匹配结果中提取出所需部分?
  • 正则表达式帮忙看下正则表达式
  • java正则表达式语法java正则表达式问题?
  • 还是正则表达式,有点疑惑

相关文章

  • 2017-06-07 python代码转php
  • 2017-06-07 正在等待iphone正在等待可用的套接字
  • 2017-06-07 JBoss可以像tomcat那样指定程序目录吗?
  • 2017-06-07 (VFP)grid,双击一行,就隐藏那一行
  • 2017-06-07 面向对象编程思想
  • 2017-06-07 正则表达式中零宽断言怎么使用
  • 2017-06-07 python视频教程用python制作视频
  • 2017-06-07 python在删除文件的时候检测该文件是否被其他线程或者进程占用?
  • 2017-06-07 (VFP)手动改变表格列宽时,能否触发事件?
  • 2017-06-07 Laravel使用DB::insert插入数据,字段created_at为0000?

文章分类

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

最近更新的内容

    • 客服电话不方便接听,工单无人回复,谁能帮下我关于缩略图
    • 外链接生成问题
    • 关于一个正则表达式的问题
    • github这两天速度异常地慢啊
    • codecademy,ideonecom/等在线测试js,php,ruby,python是怎么实现的?
    • (laravel)hometead下载太慢了,能不能直接下个压缩包?
    • (python)按照网上的教程上传文件,一直出现500错误
    • PHP端如何做好API版本的控制?
    • (python)pandas缺失值的预填充处理对原先数据类型的影响如何消去?
    • shell排序去重问题

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

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