写点什么

JavaScript 学习(十一)---RegExp 对象

用户头像
空城机
关注
发布于: 刚刚
JavaScript学习(十一)---RegExp对象

​目录

创建 RegExp 对象

1.使用 RegExp 的显式构造函数

2.使用 RegExp 的隐式构造函数,采用纯文本格式

RegExp 对象的属性

静态属性:


index 属性:


input 属性:


lastIndex 属性:


lastMath 属性:


lastParen 属性:


leftContext 属性:


rightContext 属性:


9 属性:


实例属性:


global 属性:


ignoreCase 属性:


multiline 属性:


source 属性:


RegExp 对象的方法


1.exec()方法


语法:rgExp.exec(str)


rgExp:


str:


例子:


2.test()方法


语法:rgexp.test(str)


例子:


创建 RegExp 对象每一条正则表达式模式对应一个 RegExp 实例,有两种方式可以创建 RegExp 对象的实例。


1.使用 RegExp 的显式构造函数语法:new RegExp("pattern"[,"flags"])    //即 new RegExp(" 模式 "[," 标记 "])


2.使用 RegExp 的隐式构造函数,采用纯文本格式语法:/pattern/[flags]


pattern 部分为要使用的正则表达式模式文本,是必选项。


flags 部分设置正则表达式的标志信息,是可选项。如果设置 flags 部分,在第一种方式中,以字符串形式存在;在第二种方式中,以文本的形式紧接在最后一个‘/’字符之后。flags 可以是一下标志字符的组合。


g 是全局标志。如果设置了这个标志,对某个文本执行搜索和替换操作时,将对文本中所有匹配的部分起作用。如果不设置这个标志,则仅搜索和替换最早匹配的文本内容。


i 是忽略大小写标志。如果设置了这个标志,进行匹配时将忽略大小写。


m 是多行标志。如果不设置这个标志,那么元字符‘^’只与整个被搜索字符串的开始位置相匹配。而元字符‘$’只与整个被搜索字符串的结束位置相匹配。


RegExp 对象的属性 RegExp 对象的属性分为静态属性和实例属性。


静态属性:RegExp 对象的静态属性包括 index、input、lastIndex、lastMath、lastParen、leftContext、rightContext 以及9。


index 属性:是当前表达式模式首次匹配内容的开始位置,从 0 开始计数。其初始值为-1,每次匹配成功,index 属性都会随之改变。


input 属性:返回当前所作用的字符串,可以简写为 $_,初始值为空字符串。


lastIndex 属性:是当前表达式模式首次匹配内容中最后一个字符的下 一个位置,从 0 开始计数,常被作为继续搜索时的起始位置,初始值为 1,表示从起始位置开始搜索,每次成功匹配时,lastIndex 属性值都会随之改变。


lastMath 属性:是当前表达式模式的最后一个匹配字符串,可以简写为 $&。其初始值为空字符串("")。在每次成功匹配时,lastMatch 属性值都会随之改变。


lastParen 属性:如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为 $+。其初始值为空字符串("")。每次成功匹配时,lastParen 属性值都会随之改变。


leftContext 属性:是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为 $’(其中'`'为键盘上 Esc 键下边的反单引号)。初始值为空字符串("")。每次成功匹配时,其属性值都会随之改变。


rightContext 属性:是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为 $’(其中'`'为键盘上 Esc 键下边的反单引号)。初始值为空字符串("")。每次成功匹配时,其属性值都会随之改变。


9 属性:这些属性是只读的。如果表达式模式中有括起来的子匹配,9 属性值分别是第 1~9 个子匹配所捕获到的内容。如果有超过 9 个以上的子匹配,9 属性分别对应级后的 9 个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但 RegExp 对象只能存储最后的 9 个子匹配的结果。在 RegExp 实例对象的一些方法所返回的结果数组中, 可以获得所有圆括号内的子匹配结果。


实例属性:RegExp 的实例有几个只读的属性,其中 global 表示是否为全局匹配,ignoreCase 表示是否忽略大小写,mutiline 表示是否为多行匹配,source 是正则式的源文本,如“/[ab]/g"”的源文本就是“[ab]"。另外还有“ 个可写的属性是 lastIndex, 表示下次执行匹配时的起始位置。下面对这几种属性进行详细说明。


global 属性:返回创建 RegExp 对象实例时指定的 global 标志(g) 的状态。如果创建 RegExp 对象实例时设置了 g 标志,该属性返回 true,  否则返回 false,默认值为 false.


ignoreCase 属性:返回创建 RegExp 对象实例时指定的 ignoreCase 标志(i)的状态。如果创建 RegExp 对象实例时设置了 i 标志,该属性返回 true,否则返回 false,默认值为 false.


multiline 属性:返回创建 RegExp 对象实例时指定的 multiline 标志( m)的状态。如果创建 RegExp 对象实例时设置了 m 标志,该属性返回 tnue,否则返回 false, 默认值为 false.


source 属性:返回创建 RegExp 对象实例时指定的表达式文本字符串。


RegExp 对象的方法 1.exec()方法 exec()方法用正则表达式模式在字符串中运行查找,并返回包含该查询结果的一个数组。


语法:rgExp.exec(str)rgExp:必选项。包含正则表达式模式和可用标志的正则表达式对象。


str:必选项。要在其中执行查找的 Sring 对象或字符串文字。如果 exec()方法没有找到匹配,则返回 null;如果找到匹配,则 exec()方法返回一个数组, 并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的 0 元素包含了完整的匹配,而第 1~n 元素中包合的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志(g) 的 match()方法。


如果为正则表达式设置了全局标志,exec()方法从以 lastIndex 的值指示的位置开始查找:如果没有设置全局标志,exec()方法忽略 lastIndex 的值,从字符串的起始位置开始搜索。exec()方法返回的数组有 3 个属性,分别是 input、index 和 lastIndex。input 属性包含了整个被查找的字符串。index 属性中包含了整个被查找字符串中匹配的子字符串的位置。lastIndex 属性包含了匹配中最后一个字符串的下一个位置。


例子:<script language="JavaScript">function RegExpTest(){


        var src="I'm a good man";        //创建正则表达式模式        var re=/\w+/g;            var arr;        while((arr=re.exec(src))!=null)        {          document.write(arr.index+"-"+arr.lastIndex+arr+"\t");        }          }    document.write(RegExpTest());  </script>  
复制代码


2.test()方法 test()方法返回一个 Boolean 值,指出在被查找的字符串中是否存在模式。


语法:rgexp.test(str)例子:


<script language="JavaScript">			function TestDemo(re,s){				var s1; //声明变量				//检查字符串是否存在正则表达式				if(re.test(s)){   //测试是否存在					s1 = "包含";  //s包含模式				}else{					s1="不包含";  //s不包含模式				}				return("'"+s+"'"+s1+"'"+re.source+"'");			}						document.write(TestDemo(/boy/,"I am a good boy"));		</script>	
复制代码


发布于: 刚刚阅读数: 3
用户头像

空城机

关注

曾经沧海难为水,只是当时已惘然 2021.03.22 加入

业余作者,在线水文 主要干前端的活,业余会学学python 欢迎各位关注,互相学习,互相进步

评论

发布
暂无评论
JavaScript学习(十一)---RegExp对象