JavaScript学习(十三)---RegExp对象
目录
创建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以及$1...$9。
index属性:
是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次匹配成功,index属性都会随之改变。
input属性:
返回当前所作用的字符串,可以简写为$_,初始值为空字符串。
lastIndex属性:
是当前表达式模式首次匹配内容中最后一个字符的下 一个位置,从0 开始计数,常被作为继续搜索时的起始位置,初始值为1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。
lastMath属性:
是当前表达式模式的最后一个匹配字符串,可以简写为$&。其初始值为空字符串("")。在每次成功匹配时,lastMatch 属性值都会随之改变。
lastParen属性:
如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串("")。每次成功匹配时,lastParen 属性值都会随之改变。
leftContext属性:
是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$’(其中'`'为键盘上Esc键下边的反单引号)。初始值为空字符串("")。每次成功匹配时,其属性值都会随之改变。
rightContext属性:
是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$’(其中'`'为键盘上Esc键下边的反单引号)。初始值为空字符串("")。每次成功匹配时,其属性值都会随之改变。
$1...$9属性:
这些属性是只读的。如果表达式模式中有括起来的子匹配,$1..$9 属性值分别是第1~9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1..$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>

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
整理位运算
参考链接(总结的非常好,各种奇淫技巧):https://blog.csdn.net/MoreWindows/article/details/7354571 1、优先级 “<<” 和 ">>" 的优先级低于 “+” 和 “-”。 “~” 按位求反 “^”按位异或 “|”按位求或 “&”按位求与 2、基本概念 注意以下几点: 1.在这6种操作符,只有~取反是单目操作符,其它5种都是双目操作符。 2.位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。 3.15=0000 1111(二进制),右移二位,最高位由符号位填充将得到0000 0011即3。 -15 = 1111 0001(二进制),右移二位,最高位由符号位填充将得到1111 1100即-4。 https://blog.csdn.net/studyvcmfc/article/details/7606292 https://jingyan.baidu.com/article/29697b9106eb52ab21de3c7a.html ——————————...
- 下一篇
python docx文档转html页面
文章链接:https://mp.weixin.qq.com/s/uMb2ziRS1NJ1GXIjofeANg 说到word文档转html的,网上一搜一大把,各种在线word转html页面,使用起来也方便。但是在实际项目中要使用的话,需要自己开发,这里就提供一个简单的方法。 后缀 .doc 和 .docx 都是word文档,doc是word2003以及之前版本保存的文档,docx是word2007、word2010等保存的新型文档,本质都是属于文字排版的文件。注意 这里提供的方法暂时是针对docx的。 这里使用pydocx的库,安装pip3 install pydocx,可以直接对docx文件进行处理,简单粗暴,PyDocX.to_html("**.docx"),返回值就是转换后的html的源码,然后再通过写文件,写到html文件里面。 from pydocx import PyDocX html = PyDocX.to_html("test.docx") f = open("test.html", 'w', encoding="utf-8") f.write(html) f.close...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题