`
wcjy5128
  • 浏览: 16740 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

javascript中的正则表达式的贪婪模式和非贪婪模式等若干问题

阅读更多
1、贪婪模式:根据匹配字符串以及表达式尽可能多的进行匹配,成为贪婪匹配模式
   例如:/a\d+/ 即可以匹配首字母为a的之后的许多数字,这个不进行限制
     或者另外一种方法/a\d{2,}/也可以实现同样的方法

2、非贪婪模式:根据匹配字符串以及表达式尽可能少的进行匹配。使用的方法就是在修饰匹配次数的特殊符号后再加上一个?号进行限制 如"*?","+?","{n,}?","{n,m}?"
如:/a\d+?/即匹配的字符串为a为首字母,后面只能有一个数字

3、复杂模式 分为分组,反向引用,候选,非捕获性分组,前瞻,边界定位符和多行模式等
  1)、分组,
引入()的概念,其语法是(pattern),即将“pattern”部分组合成一个可以统一操作的组合项或子匹配,也就是说用括号括起一些字符,字符类或者量词等,每个捕获的字匹配项按照其出现的顺序存储在缓冲区中。 如:/(abc){3}/如过匹配的字符串是wcabcabcabc的话则可以匹配到的字符串是abcabcabc
  2)、反向引用  分组得到的子匹配,正则表达式后面的部分,可以引用前面分组的子匹配中已经匹配到的字符串,这称之为反向引用 语法是\num,即可以引用编号为num的内容 其值是1-99的整数 如:/(\w)\2{2}/ 其中\2{2}表示子匹配 如果/\w{5}/可以匹配目标字符串中连续出现的几个字符,则可以是用/\w\1{5}/来匹配。正则表达式/<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>/就可以匹配<td id="td2" style="float:left"></td> 这里的\1就是匹配的第一个括弧中\w+的内容。
  3)、候选: 即用“|”来表示匹配的表达式之间的或关系,语法是表达式|表达式,两个表达式是或的关系。如匹配座机号码 有3位区号8位号码和4位区号7位号码这两类,在写正则表达式的时候就可以写/(((\d{3}\)|\d{3}-)\d{8})|(((\d{4}\)|\d{4}-)\d{7})$/即表达了两类方式如023-47854xxx或者023/47854xxx  或者0234/xxxxxxx 0234-xxxxxxx
   4)、非捕获性分组:其语法是(?:pattern),将pattern部分组合成为一个可以统一进行操作的组合项,但是不把这部分内容当做子匹配捕获,这种方法必须在进行组合,但是又不想对组合的部分进行缓存的情况下使用。如找俩单词:programe和project  前面的pro都相同,则可以写成/programe|project/或者是/pro(gram|ject)/,如果进行非捕获性匹配的话就要写成/pro(?:gram|ject)/
   5)、正向前瞻:语法是(?=pattern) 在目标字符串的响应位置必须要有pattern部分匹配的内容,但是不作为匹配结果处理,不会放在缓冲区中。/windows(?=xp|7)/,只能匹配windows xp和windows7,不能匹配其他的内容 xp和7不作为结果返回。
   6)、负向前瞻:语法是(?!pattern) 在被搜索的字符串的相应位置不能有pattern部分表示的内容,不能将其作为结果进行处理,也不会存在缓冲区中。 如/bed(?!room)/可以匹配bed后不是room的所有字符串
  7)、边界定位符:^ 与字符串开始的地方匹配,不匹配任何字符 但是如果是放在[^a-z]的时候就表示匹配除了a-z以外的字符串。$表示与字符串结束的地方匹配,也是不匹配任何的字符。\b 匹配一个单词的边界,也就是单词和空格之间的位置,不匹配任何字符  \B是\b的“非”,即是匹配一个非单词边界。

0
1
分享到:
评论
1 楼 xianwu13 2012-04-27  
你根本没有理解贪婪匹配和非贪婪匹配的区别,就在这乱写

相关推荐

    javascript常用正则表达式大全

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

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

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

    JavaScript常用正则表达式

    正则表达式在JavaScript中的应用非常广泛,熟练掌握其语法和常用模式对于提高代码的健壮性和效率至关重要。通过不断实践和学习,开发者可以创建出更复杂的正则表达式,以应对各种数据验证和文本处理的需求。

    JavaScript 常用正则表达式

    JavaScript中的正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和验证字符串。它们在编程中扮演着至关重要的角色,特别是在数据验证、搜索和提取信息等方面。在这个"JavaScript常用正则表达式"的资源中,...

    JavaScript正则表达式.ppt

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

    JavaScript&正则表达式

    JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&...

    常用Javascript正则表达式汇总

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

    javascript正则表达式详解

    在JavaScript中进行正则表达式编程时,可以使用多种操作,如验证字符串是否符合某模式、切分字符串、提取匹配的数据以及替换文本。JavaScript提供了正则表达式的API,包括test、exec、search、match、replace等,每...

    javascript和正则表达式精典

    在JavaScript中,正则表达式常用于数据验证、搜索和替换等场景。创建正则表达式有两种方式:字面量表示法(/pattern/flags)和构造函数表示法(new RegExp('pattern', 'flags'))。字面量方法更常见,它直接在代码中...

    只验证数字和字母的正则表达式

    在提供的示例代码中,我们看到一个简单的登录页面,其中包含了一个名为 `AA` 的 JavaScript 函数,该函数用于验证用户输入的用户名是否符合上述正则表达式的规则。 ```javascript function AA() { var name = ...

    源码(精通正则表达式&实战正则表达式)

    本资源“源码(精通正则表达式&实战正则表达式)”专注于JavaScript环境下的正则表达式学习,通过一系列视频教程和配套源码,帮助开发者提升对正则表达式的理解和应用能力。 首先,"精通正则表达式五部视频"可能涵盖...

    三目运算符+正则表达式

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

    boost库中的正则表达式

    通过这些功能,开发者可以编写复杂的正则表达式来处理各种文本数据,进行模式匹配、替换、分割等操作,极大地提高了文本处理的灵活性和效率。在实际编程中,了解和熟练掌握Boost库中的正则表达式机制对于编写高效的...

    常用正则表达式大全.txt

    通过定义一组规则来识别文本中的特定模式,正则表达式被广泛应用于各种场景,如数据验证、搜索替换等。 ### 数字验证 1. **纯数字验证**:只允许输入纯数字。 - 正则表达式:`^[0-9]*$` - 示例:`12345` 2. **...

    JavaScript中使用正则表达式

    JavaScript中使用正则表达式的一些验证

    javascript 30分钟学会正则表达式

    在JavaScript中,我们使用`/pattern/flags`的形式来创建正则表达式,其中`pattern`是正则表达式,`flags`是可选的标志,如"g"全局搜索,"i"忽略大小写,"m"多行模式等。例如,`/hello/gi`会查找所有不区分大小写的...

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册十:正则表达式

    在JavaScript中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于执行模式匹配和字符串操作。本篇教程将深入探讨JavaScript中的正则表达式,帮助你理解和掌握这一核心概念。 一、正则表达式基础 ...

    面试笔试常考之正则表达式和模式匹配

    正则表达式(Regular Expression,简称regex)是编程领域...通过系统学习和实践,可以熟练掌握正则表达式,从而在面试和实际工作中游刃有余地解决各种字符串处理问题。对于IT专业人士来说,这是一项非常有价值的技能。

Global site tag (gtag.js) - Google Analytics