`
zhanying
  • 浏览: 8816 次
社区版块
存档分类
最新评论

JavaScript强化教程——正则表达式回溯

阅读更多
本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— 正则表达式回溯

下面的例子演示了处理正则表达式分之的过程:

    /h(ello|appy) hippo/.test("hello there,happy hippo");
这个正则表达式 "hello hippo"或"happy hippo".匹配过程开始时,首先会查找一个h,目标字符串的首字母恰好是h,于是立刻被找到。接下来,子表达式(ello|appy)提供了两个处理选项,正则表达式选择最左侧的选项(分之选择总是从左向右进行),检查ello是否匹配字符串中的下一个字符,匹配成功,正则表达式进行匹配随后的空格,由于hippo中的h无法匹配下一个字符串中的t,因此匹配无法继续。此时,正则表达式还不能放弃,因为它还未城市完所有的可选项,随后他会回溯到最近的决策点(匹配万首字符h后面的位置)并尝试匹配第二个分支。匹配并没有成功,也没有更多的可选项,所以正则表达式认为从字符串的第一个字符匹配是不能成功的,因此从第二个字符开始重新尝试。他没有找到h,于是继续搜索知道在第14个字符串的位置匹配到“happy”中的h,然后会再次进入分支过程,这次未能匹配ello,但是在回溯并尝试第二个分支过程后,匹配到了整个字符串“happy hippo”。
匹配成功。
分享到:
评论

相关推荐

    正则表达式学习手册

    他基于当时的神经生理学研究成果,在一篇名为《正则集代数》的论文中定义了“正则集”,并引入了一种用来描述这些集合的记号——正则表达式。 - **1968年:** Ken Thompson将正则表达式引入计算机领域,他开发了两款...

    各类正则表达式参考

    本资源包含两类书籍——"JavaScript正则表达式.pdf"和"经典JavaScript正则表达式实战.pdf",主要针对JavaScript环境下的正则表达式使用进行深入探讨。 首先,我们来了解一下正则表达式的基础概念。正则表达式由特殊...

    精通正则表达式(2014最新版)

    7. **正则表达式引擎**:了解不同的正则引擎实现,如Perl风格和JavaScript风格的差异,以及它们在处理回溯和重复时的不同策略。 8. **高级应用**:如在搜索替换中的使用,以及在各种编程语言中的集成,例如Python的...

    简单入门正则表达式(侧重原理,附属实例)

    还会讨论不同的编程语言或工具(如JavaScript、Python、Java等)中如何使用正则表达式。 第四章 单字符的匹配: 这部分会讲解如何匹配单个字符,如字母、数字、特殊字符等。会涵盖基础字符类,如`\d`(数字)、`\w`...

    正则表达式(RegexTester工具及入门)

    本篇文章将介绍正则表达式的基本概念、常见语法以及一个实用的测试工具——RegexTester。 一、正则表达式基础 1. **基本元素**: - 字符匹配:如`a`匹配字符'a'。 - 重复匹配:`*`表示前面的字符可以出现零次或...

    正则表达式

    在JavaScript中,正则表达式是内建的,可以直接在字符串中使用。了解并熟练掌握正则表达式对于任何IT从业者来说都是一个重要的技能,无论是在日志分析、数据清洗还是文本解析等任务中都能发挥关键作用。 总的来说,...

    js正则表达式

    1. 字面量表示法:在JavaScript中,我们可以使用两种方式创建正则表达式——字面量表示法和构造函数表示法。字面量表示法是最常见的,以斜杠(/)包围,如 `/abc/`。 2. 正则元字符:元字符是具有特殊含义的字符,...

    正则表达式之回溯

    本文将深入探讨正则表达式中的一个重要概念——回溯,以及它与两种不同的匹配机制:非确定型有穷自动机(NFA)和确定型有穷自动机(DFA)的关系。 在正则表达式中,回溯是一种搜索策略,当遇到多个可能的匹配路径时...

    js代码-正则表达式验证

    - **创建方式**:在JavaScript中,可以使用两种方式创建正则表达式——字面量表示法(`/pattern/flags`)和构造函数表示法(`new RegExp('pattern', 'flags')`)。 - **元字符**:例如`^`(行首)、`$`(行尾)、`...

    eloquent[removed]我从 Eloquent-Javascript 中找到的练习的解决方案

    6. **正则表达式**:介绍了用于文本匹配和操作的正则表达式,包括模式、标志、分组和回溯等概念。 7. **错误处理**:如何使用try/catch语句进行异常处理,以及如何创建自定义错误类型。 8. **DOM编程**:解释了...

    高级记事本

    - **查找和替换**:强大的查找和替换功能,支持正则表达式,使文本操作更为灵活。 - **宏录制与播放**:可以录制一系列操作为宏,然后随时播放,大大节省重复工作的时间。 - **自定义工具**:用户可以创建自己的命令...

    Editplus_ha_gr

    4. **强大的搜索与替换**:支持全文本搜索和替换,支持正则表达式,能进行复杂的查找和替换操作,极大提高了文本处理效率。 5. **多文件编辑**:用户可以同时打开并编辑多个文件,通过标签页进行快速切换,方便进行...

    wxMEdit非常好用的文件编辑器

    5. 搜索与替换:强大的搜索和替换功能,支持正则表达式,能快速定位和修改代码中的问题。 6. 调试工具:集成调试功能,如断点设置、单步执行、查看变量值等,便于代码调试。 7. 自定义配置:用户可以根据个人喜好...

    最好的记事本替代 64位

    6. **查找和替换功能**:强大的查找和替换功能,支持正则表达式,可以进行复杂的文本搜索和替换操作。 7. **插件扩展**:通过安装插件,EmEditor的功能可以进一步增强,例如添加FTP上传、代码折叠、CSV编辑等功能。...

    搜索工具 Search and Replace

    3. **高级搜索选项**:除了基本的关键词搜索,"Search and Replace"还提供了诸如忽略大小写、全词匹配、正则表达式等高级搜索选项,满足了开发者对复杂查询的需求。 二、替换功能精讲 1. **批量替换**:在找到目标...

    DigitalCrafts-Algorithms:每周算法实践

    6. **字符串处理**:JavaScript中的正则表达式和字符串函数可以辅助我们完成文本匹配、模式识别等任务,例如KMP算法和Rabin-Karp算法。 7. **数据结构**:栈、队列、链表、树、哈希表等基础数据结构是算法的基础。...

    leet-code-questions

    5. **字符串处理**:JavaScript的String对象有多种操作字符串的方法,如split、join、substring等,同时正则表达式也是处理字符串的强大工具。 6. **递归与回溯**:JavaScript中递归函数的使用需要考虑堆栈溢出问题...

    leetcode-js:LeetCode精选习题,直通BAT大厂

    - 正则表达式、模式匹配、字符串反转等,如验证回文串、最长回文子串等。 7. **位运算** - 利用位运算可以高效地解决一些问题,如单个数字的出现次数、翻转二进制位等。 8. **递归与迭代** - 递归是算法设计的...

    LeetCode

    8. **正则表达式**:用于文本匹配和替换,是处理字符串问题时的利器。 9. **ES6及后续版本的新特性**:箭头函数,模板字符串,let/const,解构赋值,class,模块导入导出(import/export),Set/Map,Symbol,Proxy...

Global site tag (gtag.js) - Google Analytics