JavaScript引用类型RegExp

本文和大家分享的主要是javascript 的引用类型RegExp相关内容,一起来看看吧,希望对大家 学习javascript有所帮助。

·  字面量

var  reg=/\d+/g;

console.log( reg.test("789456"));//true

·  构造函数

var reg2=new RegExp("\\d+","g");console.log(reg2.test("1234444456"));//trueconsole.log(reg2.test("asdsa"));//false

修饰符

·  i:  表示不区分大小写(case-insensitive )模式,即在确定匹配项时忽略模式与字符串的大小写;

·  m:  表示多行(multiline )模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模 式匹配的项。

·  g:  表示全局(global )模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即 停止;

元字符

·  单个字符数字

· .  匹配除换行符以外的任意字符

· [a-zA-Z0-p]  与  [^a-zA-Z0-p]  匹配方括号中的任意字符,前面代 ^ 是匹配不在方括号中的任意字符;

· \d  与  \D  匹配数字和匹配非数字;

· \w  与  \W  匹配字符和匹配非字母

·  空白字符

· \O  匹配 null 字符

· \b  匹配空格字符

· \f  匹配换页符

· \n  匹配换行符

· \r  匹配回车符

· \s  和  \S  匹配空白字符,空格、制表符或换行符。大写的 S 是匹配非空字符

· \t  匹配制表符

·  定位符

· ^  行首匹配

· $  行尾匹配

· \A  只匹配字符串的开始处

· \b \B  匹配单词便捷,词在 [] 内无效,匹配非单词边界

· G  匹配当前搜索的开始位置

· \Z \z  匹配字符串结束处或行尾,只匹配字符串结束处

·  限定符

· x?  匹配 0 个或一个 x

· x*  匹配 0 个或者任意多个 x

· x+  匹配一个或者多个

· x{m,n}  匹配 m-n 个 x ;

·  分组

· (?:x)  匹配 x 但不记录匹配结果(匹配不捕获)

· x(?=y)  当 x 后面接 y 时匹配 x

· x(?!y)  当 x 后不是 y 时匹配 x

·  引用

· \1…\9 $1…$9  返回就割在模式匹配期间找到的,最近保存的部分

·  或模式

· x|y|z  匹配 x 或者 y 或者 z

属性

实例属性

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

· global :布尔值,检测是走设置 g 标记

· ignoreCase :布尔值,检测是否设置 i 标记

· nultiline : 布尔值,检测是否设置了 m 标记

· lastIndex : 整数,表示开始搜索下一个匹配项的字符位置,从  0  算起。

· source  返回正则表达式的字符串表示 , 按照字面量形式而非传入构造函数中的字符串模式返回。

通过这些属性可以获知一个正则表达式的各方面信息,但却没有多大用处,因为这些信息全都包含在模式声明中。

var pattern1 = /\[bc\]at/i;console.log(pattern1.global); //falseconsole.log(pattern1.ignoreCase); //trueconsole.log(pattern1.multiline); //falseconsole.log(pattern1.lastIndex); //0console.log(pattern1.source); //"\[bc\]at" var pattern2 =  new RegExp("\\[bc\\]at", "i");console.log(pattern2.global); //falseconsole.log(pattern2.ignoreCase); //trueconsole.log(pattern2.multiline); //falseconsole.log(pattern2.lastIndex); //0console.log(pattern2.source); //"\[bc\]at"

尽管第一个模式使用的是字面量,第二个模式使用了 RegExp  构造函数,但它们的 source  属性是相同的。可见,  source  属性保存的是规范形式的字符串,即字面量形式所用的字符串。

构造函数属性

· $_ input  返回最近一次匹配的字符串

· $& lastMatch  返回最近一次的匹配项

· $+ lastParen  返回最近一次匹配的捕获组

· $` leftContext  返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符

· $’ rightContext  返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符

· $* multiline  检测表达式是否采用多行匹配 m

方法

实例方法

test() 方法在字符串中检测模式匹配,返回 true 或 false

var re = null, i;

for (i = 0; i < 10; i++) {

re = /cat/g;

console.log(re.test("catastrophe")); //true

}

for (i = 0; i < 10; i++) {

re =  new RegExp("cat", "g");

console.log(re.test("catastrophe")); //true

}

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

var text = "cat, bat, sat, fat"; var pattern1 = /.at/; var matches = pattern1.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0

matches = pattern1.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0

var pattern2 = /.at/g; var matches = pattern2.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern2.lastIndex); //3

matches = pattern2.exec(text);console.log(matches.index); //5console.log(matches[0]); //batconsole.log(pattern2.lastIndex); //8

第一个模式 pattern1  不是全局模式,因此每次调用  exec()  返回的都是第一个匹配项(  “cat”  )。而第二个模式  pattern2  是全局模式,因此每次调用  exec()  都会返回字符串中的下一个匹配项,直至搜索到字符串末尾为止。此外,还应该注意模式的  lastIndex  属性的变化情况。在全局匹配模式下,  lastIndex  的值在每次调用  exec()  后都会增加,而在非全局模式下则始终保持不变。

字符串方法

· match  找到一个或者多个正则表达式的匹配

· replace  替换与正则表达式匹配的子串

· search  检索与正则表达式匹配的值

· split  把字符串分割为字符串数组

来源: liuguoquan727

时间: 2025-01-11 22:42:30

JavaScript引用类型RegExp的相关文章

【javascript 引用类型(一)】

javascript 的引用类型大致分为:Object 类型.Array 类型.Date 类型.RegExp 类型.Function 类型.基本包装类型和单体内置对象.这里我们着重介绍 Object 类型.Array 类型和 RegExp 类型. [Object 类型] 创建 Object 实例的方式有两种,一种是使用 new 操作符后跟 Object 构造函数,代码如下: var person = new Object(); person.name = 'Nicholas'; person.a

关于javascript中RegExp的实例方法exex()和test()的小&#39;冲突&#39;

之前使用js中正则表达式的过程中,基本都是用的test方法,exec很少用,更别说test和exec混用的情况,今天碰巧遇到了这个情况,于是就发现了一个小'bug'. 比如我们要匹配全文中长度为4的单词,我们通常会这么做: var str = 'my last name is junhua' var reg = /\b\w{4}\b/gvar result, i = 1 while (i > 0) { result = reg.exec(str) if(!result) { break; } c

JavaScript中RegExp对象

JavaScript中RegExp对象是保存有关正则表达式模式匹配信息的固有全局对象.使用方法: RegExp.property 必选项property 参数是 RegExp 对象的任意一个属性. RegExp 对象不能直接创建,但始终可以使用.在成功的正则表达式查找完成之前,RegExp 对象各属性的初始值如下所示: 属性简写初始值 index-1www.hljmlyfcyy.com lastIndex-1 lastMatch$&空字符串. lastParen$+空字符串. leftConte

Javascript的RegExp对象

正则表达式是一个描述字符模式的对象. JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. '*********************** ' javascript ' '*********************** 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象, 也可以用JavaScript 1.2中的新添加的一个特殊语法来创建Re

javascript篇:javascript对象——RegExp

直接量语法: /pattern[/attributes] 创建RegExp对象: var reg = new RegExp(pattern[,attributes]); pattern是一个字符串,指定正则表达式:attributes是一个可选的字符串,包含g,i,m,分别表示全局匹配.忽略大小写匹配和多行匹配 RegExp对象属性: global返回Boolean,指明RegExp对象是否具有标志g. ignoreCase返回Boolean,指明RegExp对象是否具有标志i. lastInd

JavaScript引用类型之RegExp类型(正则表达式)

ECMAScript中使用RegExp来支持正则表达式.使用下面类似Perl的语法,就可以创建一个正则表达式. var expression=/pattern/flags; 如上代码: pattern   ---pattern部分可以是任何简单或复杂的正则表达式,可以包含字符类.限定符.分组.向前查找以及反向引用. falgs       ---每个正则表达式都可带有一个或多个标志(flags),用于标明正则表达式的行为; 以下是正则表达式的匹配模式所支持的3个标志: g : 表示全局模式,即模

javascript学习笔记 - 引用类型 RegExp

四 RegExp 格式: var expression = / pattern / flags; 1.flags 为标志.分别为g.i.m. g:表示全局模式.即模式将匹配所有的字符串,而不是在发现第一个匹配项时就立即停止. i:表示不区分大小写.  m:表示多行模式,即在到达一行文本末尾时还会继续查找下一行.   2.RegExp实例的属性 global:是否设置了g标志: ignoreCase:是否设置了i标志: lastIndex:表示开始搜索下一个匹配项的字符位置,从0算起: multi

JavaScript引用类型和值类型

thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.45;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr&g

深入了解JavaScript引用类型之--Object、Array

1.Object类型 对象是某个特定引用类型的实例,新对象有两种创建方式: i.使用new操作符调用构造函数来创建. 1 var person = new Object(); 2 person.name = "zhangsan"; 3 person.age = 20; ii.使用对象字面量表示法来创建对象,可以简化创建包含大量属性的对象的创建过程. 1 var person = { 2 name = "zhangsan", 3 age = 20 4 }; var p