博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS引用类型之——RegExp
阅读量:6237 次
发布时间:2019-06-22

本文共 2675 字,大约阅读时间需要 8 分钟。

前言

之前小猪分享过关于正则表达式的一些内容,具体请看,今天小猪来分享怎么在js中使用正则表达式。

定义

ECMAScript通过RegExp类型来支持正则表达式。使用下面类似Perl的语法,就可以创建一个正则表达式。

var expression = |pattern |flags;

其中的模式(pattern)部分可以是任何简单或复制的正则表达式,可以包含字符串、限定符、分组、向前查找以及反向引用。每个正则表达式都可带有一或多个标志(flags),用以标明正则表达式的行为。

 

RegExp实例属性

RegExp对象的属性分为静态属性和实例属性。下面分别进行介绍。

1.1   静态属性

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

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

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

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

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

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

(7)rightContext属性。是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$’。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。

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

1.2   实例属性

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

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

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

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

 

RegExp实例方法

RegExp对象的常用方法有test、exec和compile,本节介绍这些方法的功能和用法。最后,对RegExp对象的属性和方法进行一个综合举例。

2.1   test方法

语法格式为test(str)。该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的表达式模式,如果存在就返回True,否则返回False。如果找到匹配项,则会更新RegExp对象中的有关静态属性,以反映匹配情况。

var patt1=new RegExp("e");document.write(patt1.test("The best things in life are free"));

由于该字符串中存在字母 "e",以上代码的输出将是:

true

2.2   exec方法

语法格式为exec(str)。该方法使用创建RegExp对象实例时所指定的表达式模式对一个字符串进行搜索,并返回一个包含搜索结果的数组。

var patt1=new RegExp("e");document.write(patt1.exec("The best things in life are free"));

由于该字符串中存在字母 "e",以上代码的输出将是:

e

     如果为正则表达式设置了全局标志(g),可以通过多次调用exec和test方法在字符串中进行连续搜索,每次都是从RegExp对象的lastIndex属性值指定的位置开始搜索字符串。

     如果没有设置全局标志(g),则exec和test方法忽略RegExp对象的lastIndex属性值,从字符串的起始位置开始搜索。

 

如果exec方法没有找到匹配,返回值为null;如果找到匹配,则返回一个数组,并更新RegExp对象中有关静态属性以反映匹配情况。返回数组中的元素0包含了完整的匹配结果,而元素1~n依次是表达式模式中定义的各个子匹配的结果。

var patt1=new RegExp("e","g");do{    result=patt1.exec("The best things in life are free");    document.write(result);}while (result!=null)

由于这个字符串中 6 个 "e" 字母,代码的输出将是:

eeeeeenull

 

exec方法返回的数组有3个属性,分别是input、index和lastIndex。

     input属性是整个被搜索的字符串。

     index属性是指匹配在整个被搜索字符串中的位置。

     lastIndex属性是指匹配的子字符串的最后一个字符的下一个字符位置。

下面代码是对该方法的应用举例。

代码exec()方法应用:2.2.3.htm

    exec()方法应用      

 

RegExp构造函数属性

转载于:https://www.cnblogs.com/smallerpig/p/3646167.html

你可能感兴趣的文章
MDeamon如何限制进出邮件大小
查看>>
为C# as 类型转换及Assembly.LoadFrom埋坑!
查看>>
word的问题
查看>>
MDaemon邮件报表统计插件——MailDetective
查看>>
为何有着良好设计的系统代码反而不容易看懂?
查看>>
[Ajax]ajax入门
查看>>
什么是BPOS
查看>>
JSP中的四种属性范围(重点)
查看>>
Ubuntu init启动流程分析浅析
查看>>
linux之df命令
查看>>
HDOJ 1303 Doubles(简单题)
查看>>
0206关于dg Gap Detection and Resolution
查看>>
正确把控seo优化工作流程
查看>>
第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器
查看>>
探索Android软键盘的疑难杂症
查看>>
十五天精通WCF——第十三天 用WCF来玩Rest
查看>>
Windows Phone 宣告死亡,但为什么我们不感到遗憾?
查看>>
电脑中被误删除的文件怎么免费恢复回来真的好用
查看>>
Android官方入门文档[4]启动另一个Activity
查看>>
FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
查看>>