【JavaScript】RegExp类型(正则表达式)学习笔记

it2022-05-05  170

RegExp类型

0. 概述1. 实例属性2.实例方法2.1 exec()方法2.2 test()方法 3.构造函数属性4.模式的局限性

0. 概述

ECMAScript通过RegExp类型来支持正则表达式。创建一个正则表达式。 var expression=/pattern/flags; 每个正则表达式都可带有一个或多个标志,用以表明正则表达式的行为。 正则表达式的匹配模式支持下列3个标志: g: 表示全局模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。 i: 表示不区分大小写模式,即在确定匹配项时忽略模式与字符串的大小写; m:表示多行模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。 与其他语言中的正则表达式类似,模式中使用的所有元字符都必须转义。 正则表达式中的元字符包括:( [ { \ ^ $ | ? * + . } ] )如果想匹配字符串中包含的这些字符,就必须对它们进行转义。

1. 实例属性

RegExp的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息。

1)global:布尔值,表示是否设置了g标志 2) ignoreCase:布尔值,表示是否设置了i标志 3) lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起 4) multiline:布尔值,表示是否设置了m标志 5)source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

2.实例方法

2.1 exec()方法

RegExp对象的主要方法是exec(),该方法专门为捕获组而设计的。 接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配信息的数组;或者在没有匹配项的情况下返回null 返回的数组是Array的实例,但是包含两个额外的属性:index和input index:表示匹配项在字符串中的位置 input:表示应用正则表达式的字符串 在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项) var text="mom and dad and baby"; var pattern=/mom( and dad( and baby)?)?/gi; var matches=pattern.exec(text); alert(matches.index); //0 alert(matches.input); //mom and dad and baby alert(matches[0]);///mom and dad and baby alert(matches[1]);// and dad and baby alert(matches[2]);//and baby

2.2 test()方法

它接受一个字符串参数。 在模式与该参数匹配的情况下返回true,否则返回false。 在只想知道目标字符串与某个模式是否匹配,但不需要知道其文本内容的情况下,使用这个方法非常方便。

3.构造函数属性

RegExp构造函数包含一些属性,这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。 关于这些属性的另一个独特之处,就是可以通过两种方式访问它们 就是这些属性分别有一个长属性名和短属性名。 长属性名短属性名说明input$_最近一次要匹配的字符串.Opera未实现此属性lastMatch$&最近一次的匹配项。Opera未实现此属性lastParen$+最近一次匹配的捕获组 Opera未实现此属性leftContent$’input字符串中lastMatch之前的文本mutiline$*布尔值 表示是否所有表达式都使用多行模式。Opera 和IE未实现此属性rightContent$’input字符串中lastMatch之后的文本

4.模式的局限性

尽管ECMAScript中的正则表达式功能还是比较完备的,但仍然缺少某些语言所支持的高级正则表达式特性。下面列出了ECMAScript正则表达式不支持的特性:

1)向后查找 2)并集和交集类 3)原子组 4)Unicode支持 5)命名的捕获组 6)条件匹配 。。。。 即使存在这些限制,但ECMAScript正则表达式仍然是非常强大的,能够帮助我们完成绝大多数模式匹配任务。

最新回复(0)