`
Howareyou73
  • 浏览: 46127 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

解读Javascript正则表达式之正向预查

阅读更多

1. 下面是一个正则表达式匹配的例子!

var tmp=null;
var re=/(?=bbb)b/g;
while((tmp=re.exec("bbbbbbb"))!=null){
     alert(tmp.index+":"+tmp);
}

结果是弹出如下:



.........

..............

.....................

还有 2:b , 3:b , 4:b  .... 就不上图了!

2. 为什么会有这样一个结果呢?

我们可以看出这样的搜索过程!

首先是  (?=bbb), 它之所以叫做正向预查,

它的作用就是从当前的查找位置开始,向后搜索符合条件的位置,并停留下来!

对于字符串 bbbbbbb, 搜索过程如下



对步骤进行描述

A. (?=bbb)b 是正则,其中(?=bbb) 像先头部队一样,先到字符串里打探情况,找到有 bbb的地方,并记录位置
 
B. 然后在记录的位置去匹配b, 如果匹配上了, 则查找位置,移到匹配之后,也就是 b 后面,

C. 我们可以把b看作是红旗,占领了之后, ?=bbb 就从红旗后面继续去侦察? 继续找 有bbb的地方

D. 找到之后,再拿b来匹配! 。。一直匹配到末尾!



3. ?= 在后面的预查, 这个就要好理解多了!

var tmp=null;
var re=/bb(?=c)/g;
while((tmp=re.exec("bbcbbabbc"))!=null){
     alert(tmp.index+":"+tmp);
}

bb(?=c) 的意思就是找到符合 bbc的,但是匹配的时候,只匹配 bb ,
也就是说查找位置移到bb的后面, 而不是移到bbc的后面,
然后从 bb的后面开始向后查找!



总结:?= 放在前面的时候,是用来预先查找位置的, ?=放到后面的时候,用来“假”匹配的!
分享到:
评论

相关推荐

    javascript正则表达式迷你书 (1).pdf

    JavaScript 正则表达式迷你书 本书是 JavaScript 正则表达式的入门级教程,旨在帮助读者快速掌握正则表达式的基本概念和应用。下面是本书的知识点摘要: 第一章:正则表达式字符匹配攻略 * 两种模糊匹配:横向...

    JavaScript正则表达式.ppt

    了解正则表达式概念 掌握正则表达式的语法 熟练掌握正则表达式在JavaScript中的应用

    javascript正则表达式详解 (chm)

    javascript正则表达式详解 (chm)

    javascript正则表达式详解

    JavaScript正则表达式是JavaScript语言中一种极为重要的文本处理工具,它允许通过简洁的语法定义文本的匹配模式。这些模式可用来对字符串进行检索、替换、提取等操作。了解和掌握JavaScript正则表达式,对于提高...

    Javascript正则表达式测试网页.rar

    JavaScript正则表达式是网页开发中的重要工具,用于处理文本数据的验证、查找、替换等操作。在网页制作过程中,熟练掌握正则表达式能够极大地提高代码效率和灵活性。本压缩包“Javascript正则表达式测试网页.rar”...

    常用Javascript正则表达式汇总

    JavaScript中的正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换。以下是一些常见的JavaScript正则表达式及其应用: 1. **匹配中文字符**:`[\u4e00-\u9fa5]` 这个正则表达式用于匹配...

    JavaScript常用正则表达式

    正则表达式(Regular Expression)是JavaScript中的一种强大工具,用于匹配字符串中的模式。在JavaScript中,正则表达式可以用来验证用户输入,例如检查邮箱地址的有效性或手机号码的格式。以下是一些JavaScript中...

    javascript正则表达式表单验证大全

    ### JavaScript正则表达式在表单验证中的应用详解 在Web开发中,表单验证是确保数据质量和用户体验的重要环节。JavaScript正则表达式提供了一种强大的工具,用于前端数据校验,确保用户输入的数据格式正确无误。...

    javascript常用正则表达式大全

    javascript常用正则表达式大全,基本覆盖基本需求的正则表达式

    正则表达式之道.rar

    "中级(神奇的咒语)"则引入了更高级的概念,如反向引用(用于匹配与前面捕获组相同的文本)、非捕获组(不影响整体的括号分组)以及正向预查(匹配某个位置后面紧跟的特定模式)。这些技巧能帮助解决更为复杂的数据...

    JavaScript正则表达式使用详解.zip

    在JavaScript中,正则表达式还有许多特殊结构,比如预查(lookahead)、后顾(lookbehind)、边界匹配符(如`\b`用于匹配单词边界)等,这些都能帮助我们编写更复杂的匹配规则。 文件"JavaScript正则表达式使用详解...

    常用正则表达式大全.txt

    根据提供的文件信息,我们可以整理出一系列与正则表达式相关的知识点。这些知识点涵盖了从基本的数字验证到复杂的字符串匹配等多个方面。下面是详细的知识点总结: ### 基本概念 正则表达式是一种用于文本模式匹配...

    javascript 30分钟学会正则表达式

    在JavaScript的世界里,正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于搜索、替换、验证字符串等操作。对于任何JavaScript开发者来说,掌握正则表达式都是至关重要的,因为它们在处理数据格式...

    三目运算符+正则表达式

    在编程世界中,三目运算符和正则表达式是两个非常重要的概念,它们各自扮演着独特的角色,同时也常被结合起来使用,以提高代码的简洁性和效率。让我们深入探讨这两个主题。 首先,三目运算符,也称为条件运算符,是...

    正则表达式调试工具

    - **预查否定**:`(?!)`表示后面的模式不会匹配,而`(?=pattern)`和`(?!pattern)`分别表示后续有和没有模式`pattern`的情况。 - **选择与或**:使用竖线`|`表示或关系,如`cat|dog`匹配"cat"或"dog"。 - **回溯**...

    JavaScript正则表达式迷你书(1.1版)

    JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理字符串模式匹配和搜索替换,是数据验证、文本处理和信息提取的关键工具。在1.1版的《JavaScript正则表达式迷你书》中,作者深入浅出地...

    正则表达式速查 正则表达式举例 正则表达式学习

    - 正向预查 `(?=pattern)`:匹配查找字符串的开始位置,之后的部分必须匹配 pattern。 - 负向预查 `(?!pattern)`:匹配查找字符串的开始位置,之后的部分不能匹配 pattern。 - 示例: - `'Windows(?=95|98|NT|...

    精通正则表达式中文版英文版_中文版为扫描版

    在正则表达式的世界里,基础概念包括字符类(如匹配任何数字[\d])、量词(匹配0次或多次*,1次或多次+,至少n次{n}等)、分组与捕获(使用括号()来定义一个子模式)、预查(用^符号否定预查,如[^abc]匹配非abc的...

Global site tag (gtag.js) - Google Analytics