`
肖福燕
  • 浏览: 11819 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

正则表达式学习笔记

阅读更多
㈠正则表达式的语法
    一个正则表达式就是由普通字符(如字符a到z)以及特殊字符(称为元字符)组成的模式字符串。该模式字符串描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式的语法主要是对各个元字符功能的描述。下面将对正则表达式中的字符类、量词、指定匹配位置、选择匹配符和分组进行详细介绍。
1.使用字符类
  字符类是用于匹配的字符的组合。通过将一些字符放入方括号“[ ]”中,实现一个字符类和它所包含的任何字符都匹配。例如,正则表达式[abcd]和字母a、b、c、d任何一个都匹配。另外,一个字符类也可以用于匹配不包含在方括号内的任何字符。例如,正则表达式[^abcd]用于匹配任何一个非字母a、b、c、d的字符。正则表达式中,还包括一些具有特殊意义的字符类,它们描述了正则表达式的常用模式。正则表达式的字符类如表1所示。

      注意:使用[^…]时,如果字符“^”不是出现在第一个“[”的后面,则仍表示字符“^”的原义。
2.使用量词
  在正则表达式中,使用量词可以控制字符或字符串出现的次数。正则表达式的量词如表2所示。

3.指定匹配位置
   在使用正则表达式进行模式匹配时,需要指定某些字符出现的位置。在正则表达式中,可以通过如表3所示的4种方式指定匹配的位置。

4.使用选择匹配符
   正则表达式的选择匹配符只有一个,即“|”元字符。使用选择匹配符可以匹配所指定的两个选项中的任意一项。例如,/World|Dream/可以与“One World,One Dream”中的World或者Dream匹配。
5.分组
  分组就是使用括号将多个单独的字符或字符类组合成子表达式,以便可以像处理一个独立的单元那样,应用|、*、+或?等来处理它们。例如,正则表达式/J(ava)?Script/即与字符串JavaScript相匹配,又与字符串JScript相匹配。
     说明:上面介绍的字符类、量词、指定匹配位置、选择匹配符和分组可以组合起来应用。例如,在实际编程时,有时还需要去掉字符串的首尾空格,这时就可以使用正则表达式来匹配字符串中的首尾空格。用来匹配字符串中首尾空格的正则表达式如下: /(^\s*)|(\s*$)/g。

㈡创建正则表达式(RegExp)对象
  在JavaScript中,正则表达式由RegExp对象表示。JavaScript提供了两种创建正则表达式对象的方法,下面分别进行介绍。
1.通过RegExp类的构造方法创建
  通过RegExp类的构造方法可以创建RegExp对象。RegExp类的构造方法的语法格式如下:
      new RegExp(pattern[,flags])
      pattern:必选参数,用于指定需要进行匹配的模式字符串。
      flags:可选参数,用于指定正则表达式的标志信息。该参数的可选值可以是以下标志字符,也可以各标志字符的组合。
      g:全局标志,表示匹配字符串中出现的所有匹配子字符串。如果设置了该标志,对于某个文本执行搜索或替换操作时,将对文本中所有匹配部分起作用,否则,仅搜索或替换第一次匹配的内容。
      i:忽略大小写标志。如果设置了该标志,在执行模式匹配时不区分大小写。
     m:多行标志。如果不设置这个标志,那么^只能匹配字符串的开头,$只能匹配字符串的结尾,否则,^可以匹配多行字符串中的每一行的开头,$可以匹配多行字符串中每一行的结尾。
 例如,创建一个用于匹配0到9中任意一个数字的正则表达式对象的代码如下:
     var objExp=new RegExp("\\d"); //创建正则表达式对象
     在上面的正则表达式中,只会匹配第一个出现的数字,如果想匹配所有出现的数字,可以使用下面的代码:
     var objExp=new RegExp("\\d","g"); //创建正则表达式对象
     技巧:在通过RegExp类的构造方法创建正则表达式对象时,必须使用正常的字符串避开规则,即必须将模式字符串中的“\”前面加入前导字符“\”,否则模式匹配将不成功。例如,上面的代码中,如果将“\\d”替换为“\d”,则模式匹配不成功。
2.通过正则表达式字面量创建
  通过正则表达式字面量也可以创建RegExp对象。通过正则表达式字面量由两条斜线“//”中间加入模式匹配字符串组成。如果还要指定标志信息,则在最后的斜线“/”后面,还需要写上标志信息,如g或i。通过正则表达式字面量创建RegExp对象的语法格式如下:
     /pattern/[flags]
    pattern:必选参数,用于指定需要进行匹配的模式字符串。
    flags:可选参数,用于指定正则表达式的标志信息。如果值为g,则表示匹配字符串中出现的所有匹配子字符串;如果值为i,则表示在执行模式匹配时不区分大小写。
 例如,创建一个用于匹配0到9中任意一个数字的正则表达式对象的代码如下:
    var objExp=/\d/; //创建正则表达式对象
 在上面的正则表达式中,只会匹配第一个出现的数字,如果想匹配所有出现的数字,可以使用下面的代码:
     var objExp=/\d/g; //创建正则表达式对象

㈢应用RegExp对象执行模式匹配
  创建一个RegExp对象后,就可以应用该对象提供的方法执行模式匹配。RegExp对象提供了两个用于执行模式匹配的方法,即test()方法和exec()方法,下面进行详细介绍。
1.使用test()方法
    test()方法用于对一个指定的字符串执行模式(正则表达式)匹配,如果搜索到匹配的字符,则返回true,否则返回false。test()方法的语法格式如下:
    regExp.test(str)
    regExp:RegExp对象的实例。
    str:指定的字符串。
2.使用exec()方法
    exec()方法与test()一样,也是对一个指定的字符串执行模式(正则表达式)匹配。但是exec()方法比test()方法复杂一些,它的返回值不再是true或false,而是,当没有搜索到匹配的字符时,返回null,否则返回一个数组,这个数组的第一个元素包含与正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组(即正则表达式中用括号括起来的子表达式匹配的子串)。而且,这个数据的index属性还包含了匹配发生的字符的位置。exec()方法的语法格式如下:
    regExp.exec(str)
    regExp:RegExp对象的实例。
    str:指定的字符串。
  • 大小: 30.6 KB
  • 大小: 24.9 KB
  • 大小: 17.4 KB
分享到:
评论

相关推荐

    正则表达式学习笔记详解!

    ### 正则表达式学习笔记详解 正则表达式(Regular Expression)是一种强大的文本匹配工具,广泛应用于数据处理、文本搜索、格式验证等场景。以下是对给定文件中提到的各种正则表达式的详细解析,旨在帮助读者深入...

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....

    java正则表达式学习笔记

    ### Java正则表达式基础知识与应用 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地进行字符串的搜索、替换等操作。Java中的正则表达式支持广泛的标准和特性,是进行文本处理任务的理想...

    javascript正则表达式学习笔记

    这篇学习笔记将深入探讨JavaScript正则表达式的概念、语法和实际应用。 一、正则表达式基础 1. 创建正则表达式: - 字面量表示法:`/pattern/flags` - 构造函数:`new RegExp('pattern', 'flags')` 2. 常见的...

    关于js正则表达式学习笔记(自己整理的)

    JavaScript中的正则表达式是处理字符串的强大工具,用于匹配、替换、分割文本。它们在编程中扮演着不可或缺的角色,尤其在验证用户输入、提取数据、格式化内容等方面。以下是对正则表达式的基础知识和常见用法的详细...

    正则表达式学习笔记正则表达式学习笔记

    ### 正则表达式学习笔记 #### 一、正则表达式概述 正则表达式是一种强大的文本处理工具,能够帮助我们完成各种复杂的字符串匹配、提取、替换等操作。正则表达式通过定义一系列规则来匹配字符串中的模式,广泛应用...

    正则表达式 学习笔记 30分钟速成

    好东西才与大家分享!这是博客园一位老师的正则表达式教学笔记,很精炼的阐述,看了你一定不后悔……

    正则表达式学习笔记总结

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和提取字符串中的特定模式。在编程语言中,正则表达式广泛应用于数据验证、文本分析...通过不断的实践和学习,你可以创建更复杂的正则表达式来满足各种需求。

    基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    在"基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip"这个压缩包中,包含了三个关键的Java编程概念:多线程、反射和泛型,以及正则表达式。下面我们将详细探讨这些知识点。 1. **多线程**:多线程...

    [小小明]Python正则表达式全套笔记v0.3(1.8万字干货)

    本文档是小小明个人笔记,为学习和使用正则表达式提供了一个系统的资源。 Python正则表达式全套笔记v0.3 1.1 作者简介 小小明是数据处理专家,擅长解决各种复杂数据处理问题,并且提供了个人笔记,涵盖了正则...

    正则表达式学习笔记小结分享

    学习正则表达式能够帮助我们更好地处理复杂文本需求,如验证输入信息、查找和替换特定模式的文本,以及在大量日志和数据中提取关键信息。 正则表达式的语法结构通常是用斜杠 `/` 包裹模式,并可以加上可选的修饰符...

    java多线程反射泛型及正则表达式学习笔记和源码.zip

    这个压缩包包含的“java多线程反射泛型及正则表达式学习笔记和源码”正是针对这些关键知识点的学习资料。 首先,我们来详细探讨多线程。在Java中,多线程允许程序同时执行多个不同的任务,提高了程序的并发性和效率...

Global site tag (gtag.js) - Google Analytics