正则表达式学习笔记

㈠正则表达式的语法

  一个正则表达式就是由普通字符(如字符 a 到 z)以及特殊字符(称为元字符)组成的模式字符串。该模式字符串描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式的语法主要是对各个元字符功能的描述。下面将对正则表达式中的字符类、量词、指定匹配位置、选择匹配符和分组进行详细介绍。

1.使用字符类

  字符类是用于匹配的字符的组合。通过将一些字符放入方括号“[ ]”中,实现一个字符类和它所包含的任何字符都匹配。例如,正则表达式[abcd]和字母a、b、c、d任何一个都匹配。另外,一个字符类也可以用于匹配不包含在方括号内的任何字符。例如,正则表达式[^abcd]用于匹配任何一个非字母a、b、c、d的字符。正则表达式中,还包括一些具有特殊意义的字符类,它们描述了正则表达式的常用模式。正则表达式的字符类如表1所示。

  注意:使用[^…]时,如果字符“^”不是出现在第一个“[”的后面,则仍表示字符“^”的原义。

2.使用量词

   在正则表达式中,使用量词可以控制字符或字符串出现的次数。正则表达式的量词如表2所示。
   注意:在使用{n,m}限定符时,数字与逗号之间不能有空格符。

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:指定的字符串。












  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值