加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式学习笔记

发布时间:2020-12-13 22:03:00 所属栏目:百科 来源:网络整理
导读:㈠正则表达式的语法 一个正则表达式就是由普通字符(如字符a到z)以及特殊字符(称为元字符)组成的模式字符串。该模式字符串描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式的
㈠正则表达式的语法
一个正则表达式就是由普通字符(如字符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:指定的字符串。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读