数组的第0个元素是整个pattern的第一个匹配字符串

  1. 那四个情势,倘使同盟成功,重回二个数组,相称战败,再次回到null。 2. 当RegExp的global属性为false时,那多个办法的回到数组是相像的。 数组的第0个因素是整套pattern的率先个相称字符串,接下去的成分是pattern第二个分外中的子相称字符串。 此外,数组还或然有index和input多个附加属性,index是相称字符串的苗头地点,input是任何输入字符串。 此时,RegExp的lastIndex属性一贯是0。 demo: 复制代码 代码如下: var s = 'this is a string'; var p = /bw*sb/; var rm = s.match; var re = p.exec; console.log('match_array: ' + JSON.stringify; console.log('match_array_index: ' + rm.index); console.log('match_array_input: ' + rm.input); console.log('----------------------------'); console.log('exec_array: '

/*****************  RegExp对象的要害措施:*********************/
 /*
  * exec() : 该形式特意为捕获组织设立计的。
             @param : 选拔四个参数,要利用方式的字符串
             @return : 重回包罗第二个门户非凡项新闻的数组(array),未有相配项的景况下回到null
         @explain : 重返的数组是Array的实例,而且带有2个附加的性情:
                    index - 表示相称项在字符串中之处
                    input - 表示应用正则表达式的字符串 
                    数组中的第后生可畏项是与总人体模型式相称的字符串,别的项是情势中的捕获组相配的字符串(若无捕获组,则赶回数组只含有生机勃勃项)
 */
  var text = 'gid and var and global';
  var patterns = /gid( and var( and global)?)?/;
  var matches = patterns.exec(text);
  console.log(matches.index);   //0 整个字符串从0地方上马就与情势相称,所以回来的数组matches的index为0
  console.log(matches.input);   //"gid and var and global" 表示正则表明式要合作的字符串
  console.log(matches[0]);      //"gid and var and global" 数组第大器晚成项是相当的整个字符串
  console.log(matches[1]);      //" and var and global"   ( and var( and global)?)?第二项蕴含的是与第多个捕获组相配的原委
  console.log(matches[2]);      //" and global"           ( and global)? 第三项包罗与第二个捕获组相配的剧情
  console.log(matches[3]);      //undefined               未有第2个捕获组, return undefined
 
  //exec()方法,即便在情势中设置了大局标识(g),他老是也只会重返四个相配项。
  //不安装全局标识的情事下,在同一个字符串上夜不成眠调用exec()将一贯重返第一个相称项的消息,
  //而在设置了(g)下,在同二个字符串上反复调用exec()则都会重回字符串中三回九转搜寻新相称项
  //{IE下lastIndex即便在非g情势下,也会每一次改变。}
 
  var txt = 'cat, bat, sat, fat';
  var patterns1 = /.at/;
  var matches1 = patterns1.exec(txt);
  console.log(matches1.index);            //0 从0职位上马就曾经格外到了
  console.log(matches1[0]);               //cat
  console.log(patterns1.lastIndex);       //0 起首搜索下一个相称项的字符串位置。
 
  matches1 = patterns1.exec(txt);         
  console.log(matches1.index);            //0
  console.log(matches1[0]);               //cat
  console.log(patterns1.lastIndex);       //0
 
  var patterns2 = /.at/g;
  var matches2 = patterns2.exec(txt);
  console.log(matches2.index);            //0
  console.log(matches2[0]);               //cat
  console.log(patterns2.lastIndex);       //3
 
  matches2 = patterns2.exec(txt);
  console.log(matches2.index);            //5
  console.log(matches2[0]);               //bat
  console.log(patterns2.lastIndex);       //8
 
  /*
   * test() 
   * @param : {type:String}   
   * @return : {type:Boolean}
   * @explains : 相称的图景下return true,不然return false, 
  */
  var stxt = '000-12-2354';
  var patterns3 = /d{3}-d{2}-d{4}/;
  if(patterns3.test(stxt)){
    console.log("match sucess!")
  }
  /*
   * toLocalString()和toString()
   * @return :再次回到正则表明式的字面量格局,与创造正则表明式的点子毫不相关。
  */
  var patterns4 = new RegExp("\[bc\]at","gi");
  var patterns5 = /[bc]at/gi;
  console.log(patterns4.toLocaleString(),patterns4.toString());   // /[bc]at/gi   /[bc]at/gi
  console.log(patterns5.toLocaleString(),patterns5.toString());   // /[bc]at/gi   /[bc]at/gi
 
/*****************  RegExp布局函数的性质(這些属性在其余语言里被看做是静态属性卡塔尔:*********************/
/*
 * 分为长属性名和短属性名
 * input           $_        近年来叁回要合作的字符串
 * lastMatch       $&        近年来三遍的非凡项
 * lastParen       $+        目前一遍相称的捕获组
 * leftContext     $`        input字符串中lastMatch从前的文件
 * multiline       $*        布尔值,表示是或不是具有表达式都选拔多行格局。
 * rightContext    $'         input字符串中lastMatch之后的公文
 * 這些属性适用于功效域中的全数正则表明式 www.2cto.com
 * 注意:opera不支持input、lastMatch、lastParen和multiline属性
 * IE不支持multiline属性
*/
 var text = 'this has been a short summer';
 var pattern = /(.)hort/g;
 
 if(pattern.test(text)){
   console.log(RegExp.input + ';','shortAttr:' + RegExp.$_ + ';');//this has been a short summer
   console.log(RegExp.leftContext);    //"this has been a"  匹配short以前文本
   console.log(RegExp.rightContext);   //" summer"          匹配short之后文本
   console.log(RegExp.lastMatch);      //"short"            最终一遍的相配项
   console.log(RegExp.lastParen);      //"s"                近些日子的一回相称捕获组(.)第叁个字符放在了捕获组中
   console.log(RegExp.multiline);      //false;             不扶持多行格局
 }
 
 //通过短属性名来代替,由于短属性名大都不是实用的ECMAScript标志符,因而必需通过方括号语法来做客他们。
 var text1 = 'this has been a short summer';
 var pattern1 = /(.)hort/g;
 if(pattern1.test(text1)){
   console.log(RegExp["$_"]);      //"this has been a short summer"
   console.log(RegExp["$`"]);      //"this has been a "
   console.log(RegExp["$'"]);      //" summer"
   console.log(RegExp["$&"]);      //short
   console.log(RegExp["$+"]);      //s     如今的贰回相配捕获组(.)第一个字符放在了捕获组中
   console.log(RegExp["$*"]);      //false
 }
 /*
  * 除了地点的习性外,还应该有多达9个用于存款和储蓄捕获组的构造函数属性。
  * 這些属性的语法RegExp.$1、RegExp.$2....RegExp.$9
  * 分别存款和储蓄第生龙活虎,第二.....第八个门户极其的捕获组。在调用exec(),test()方法时,這些属性会自动填写。
  * 固然调用test()重回二个布尔值,RegExp布局函数的性质$1,$2也会自行填写的。
 */
 var text2 = 'this has been a short communication'
 var pattern2 = /(..)ic(...)o(.)/;
 if(pattern2.test(text2)){
   console.log(RegExp.$1);   //un
   console.log(RegExp.$2);   //ati
   console.log(RegExp.$3);   //n
 }
 
/*******************************字符串的方式相配方法**********************/
/*
 * match() 
           @param : 叁个参数,正则表明式也许RegExp对象。
           @return : 再次回到四个数组,和exec()相近。
 * search(regexp)
           @param :和match()参数相通。
           @return :字符串中首先个与 regexp 相相配的子串的起第3位置。再次回到第二个卓殊的目录;假设没找到重临-1;
           @explain :始终从字符串的开头向后找寻
 * replace(regexp/string,string/function)
           @param : 第三个参数是RegExp对象也许一个字符串(字符串不会被转移为正则表明式),(用什么样情势只怕字符串来替换)
           @param :第一个参数能够是个字符串可能是叁个函数(被交替的内容)
           @return : 三个新的字符串,是用 string/function 替换了 regexp/string 的第叁次相称或富有相配之后得到的。
           @explain :要替换全部子字符串,必得提供七个正则表明式,并且安装了全局(g)
           @extra : 倘使第一个参数是个字符串,可是能够行使字符系列(短属性名格局),将正则表明式操作拿到的值插入到结果字符串中
   split(string/regexp,Array.length)
           @param : 第一个参数能够是分隔符,分隔符能够是字符串,或然是贰个regexp对象
           @param : 规定数组的尺寸,以便回到的数组不会超过钦定长度。
           @return : array 再次来到叁个优越后的数组。
*/
var text = 'cat, bat, sat, fat';
var pattern = /.at/;
//与pattern.exec(text)相同
var matches = text.match(pattern);
console.log(matches.index);        //0
console.log(matches[0]);           //cat
console.log(pattern.lastIndex);    //0
 
var text1 = 'sst, bat, sat, fat';
var pos = text1.search(/at/);
var pos1 = text1.search(/at/);
console.log(pos,pos1);             //6 6 相称上了bat
 
 
var result = text.replace('at', 'oncat');
console.log(result);               //concat, bat, sat, fat
var result1 = text.replace(/at/g, 'fs');
console.log(result1);              //cfs, bfs, sfs, ffs
 
//第二个参数为字符串的; $1,捕获组的第生龙活虎项,也便是(.at)相配到的
var result2 = text.replace(/(.at)/g, 'fuck[$1]');
console.log(result2);              //fuck[cat], fuck[bat], fuck[sat], fuck[fat]
 
var colorText = "red,blue,green,yellow";
var r1 = colorText.split(",");
var r2 = colorText.split("," ,2);
var r3 = colorText.split(/[^,]+/);
console.log(r1);                   //["red", "blue", "green", "yellow"]
console.log(r2);                   //["red", "blue"]
console.log(r3);                   //["", ",", ",", ",", ""]  

(1卡塔 尔(阿拉伯语:قطر‎exec中不管是或不是全局的合营,只要未有子表达式,其归来的都唯有三个成分,如若是大局相称,尚可lastIndex进行下三个相称,相配成功后lastIndex的值将会化为上次杰出的字符的最后三个岗位的目录。在安装g属性后,即使相当结果不受g的震慑,重返结果仍是四个数组(第一个值是首先个相当到的字符串,现在的为分组相配内容卡塔 尔(阿拉伯语:قطر‎,可是会订正index和 lastIndex等的值,将该目的的合营的启幕地点设置到连片那匹配子串的字符地方,当第三次调用exec时,将从lastIndex所提醒的字符位置最早寻觅。相仿match方法在设置了g属性后,也会转移index和lastIndex的值,可是是叁遍性的。无法像exec那样能逐进程累积,因而不能够积累拿到下三回寻觅的职位。

JavaScript类别----正则表明式

1.正则表明式

1.1.正则表明式的类型

 

正则表明式在JavaScript中,提供了意气风发种内置的构造函数--RegExp.

 

正则表达式有二种相称情势:

 

g: 表示全局形式,即情势采取于具备的字符串,而非发掘第叁个符合条件的字符串甘休。

i:  代表字符串相配的时候忽视(ingnore卡塔尔国字符串的高低写。

m: 表示多行(multiline卡塔 尔(英语:State of Qatar)形式,即在高达后生可畏行的末梢时,鲜明是还是不是要随着相配下风华正茂行。

1.2.正则表明式创设

 

正则表明式的三种创制格局:

面向字面量

字面量情势创造字符串比较容易,如下所示

var reg=/bt/gim;  ----注释: /bt/ 多个斜杠中象征的是相称项。而 gim表示突出方式,g i m 两种相配格局能够写黄金年代种或三种,也能够不写。

布局函数

布局函数如下所示

var reg=new RegExp("bt","gim");//---注释 第一个参数是字符串相配项,第二种表示相当形式。

 二种艺术在起头化正则表明式的时候所得的结果,大概千篇黄金时代律。除了少数----- 次之种在现身元字符的时候需求转义.

 

1.3.元字符

正则表明式的元字符均须要转义:

 

( [ { ^ $ | ) ? * + .] } 那第114中学字符在象征的时候均与要转义,因为她们在正则说明式中均有其协和的意义。

 

   关王宛平则表明式的相称项的意义,这里只列举非常少见的二种。详细情形参见----正则表明式语法  

 

 

 

x|y  ------代表匹配X恐怕Y。比如,'z|food' 相配“z”或“food”。'(z|f)ood' 匹配“zood”或“food”。

(?:x|y)---代表相称X可能Y,然则过滤掉子选取项。那二种列举出来首即便是分别和上大器晚成种的界别。

  

 

/* 第大器晚成种演示(X|Y)*/

var str = 'iam007'; 

var reg = /^([a-z]|d)/;         //相配以数字仍是字母起头的字符串

var result = reg.exec(str);

console.log(result[1]);         //---结果:i

 

 

/*第二种 演示(?:X|Y)*/

var str = 'iam007';

var reg = /^(?:[a-z]|d)/;

var result = reg.exec(str);

console.log(result[1]);    //undefined

 

 

 

 

(?=pattern)-----代表非凡从pattern起头向后查找,而且根据pattern不占地点,何况下一次万分是从该职责上马的。

 

var str = 'iam007';

var reg = /(?=[a-z])(w)/g;

var result = reg.exec(str);

while (result && result.length) {

  console.log(result[1]);

  result = reg.exec(str);

} //第一次匹配从i伊始,第三次相称从a开头,第五个非常从m早先,第肆回则无相称项,输出结果 :----i  a  m;

 

(?!pattern)-----!pattern表示首个与pattern不协作的项,该相配也是非捕获类型的。并且,下一次相当是从那么些pattern地方上马的。

 

var str = 'iam007';

var reg = /(w)(?![a-z])d/g;

var result = reg.exec(str);

while (result && result.length) {

  console.log(result[1]);

  result = reg.exec(str);

} // 输出结果 ----  m  0   第三回相称(m00),第2回相称(007).第叁次无匹配项。

 

2.RegExp的属性

2.1.RegExp的属性

RegExp的各种实例都有下列属性,通过那个属性能够获取正则表达式的各类新闻。

 

global: 布尔值,表示是还是不是设置了g标记。----只读属性

ignoreCase:布尔值,表示是不是设置了i标记。----只读属性

lastIndex:整数,表示开头找出下三个相称项的字符地方,从0起头。 ----能够读和写(但有局限性卡塔尔国

multiline:布尔值,表示是或不是设置了m标识。-----只读属性

source:正则表明式的字符串表示。            -----只读属性

那几个属性,固然包涵在格局生命中,可是还没不小的法力,除了lastIndex外(只在global=true时改进才有效,当global=false时,固然改换,也是从index=0地方处伊始搜索),其他的都不得改进,上面大家比如来佛表明lastIndex的用处。

 

 

var reg = /w/g;

var str = 'abcdefg';

var result = reg.exec(str);

while (result && result.length) {

  console.log(result[0]);

  reg.lastIndex=reg.lastIndex+1;

  result = reg.exec(str);

}//跳跃查询,实用项也非常小。

 

 

 

2.2.RegExp结构函数属性

RegExp构造函数有部分脾性,请同RegExp实例的习性举办比较,讲着两有个别珍视是为了引出下一小节的剧情。

 

长属性名 短属性名 表明

input $_ 最近一遍要协作的字符串

lastMatch $& 近期三遍相称项(opera未完成此属性卡塔尔

leftContext $` input字符串被相称项在此之前的公文

multiline $* 是还是不是具备表明式都使用多行情势。IE和Opera尚未落到实处

rightContext $' input字符串被相配项之后的文书

lastParen $+ 近日一回的捕获组.Opera未完毕

   补充属性:  $+数字,表示被小括号捕获的项。

 

 

 

 那个值,能够从exec()和test()中领到出实际新闻。----注:此正则表明式实例必须是字面量情势创制,才足以访谈。

 

 

var text = 'hello world';

var reg = /s/g;  //相配中间的空格

var result = reg.exec(text);

for (var property in RegExp) {

  console.log('RegExp[' + property + ']=' + RegExp[property]);

}

//输出结果

RegExp[input]=hello world

RegExp[multiline]=false 

RegExp[lastMatch]=

RegExp[lastParen]=

RegExp[leftContext]=hello

RegExp[rightContext]=world

RegExp[$1]=

RegExp[$2]=

RegExp[$3]=

RegExp[$4]=

RegExp[$5]=

RegExp[$6]=

RegExp[$7]=

RegExp[$8]=

RegExp[$9]=

 

 

 

2.3.正则表达式的施用

先来看生机勃勃段代码相比:

 

 

 

var text = 'hello2world';

var reg = /d/g;

var result = reg.exec(text);

console.log(RegExp.lastMatch);

reg=new RegExp("\w","g");

result = reg.exec(text);

console.log(RegExp.lastMatch);//输出结果 2 h

 

由以上的输出结果,我们领略,全数的正则表达式实例在选择的时候都会变动RegExp布局函数的习性, 所以在每一次正则表明式使用的时候我们都足以经过RegExp布局函数的属性,来博取大家想要的结果。

 

 

 

3.正则表明式exec(),test()以至match()方法及其分化。

3.1.非大局情势---global=false;

exec()函数: 

 

exec() 方法用于检索字符串中的正则表达式的优异,再次回到值是数组

语法:

RegExpObject.exec(string)

 参数 描述 返回值

 string 被搜寻的字符串 字符串数组

 

 

 

 

在非全局形式下,每一趟搜寻字符串的时候都以从最开首之处检索,再次回到的数组,第意气风发项是一丝一毫相配的项,第二项是捕获项!等于RegExp.$1,同期也改成RegExp布局函数的性质。

 

var text = 'hello2world2sad';

var reg = /w*(d)w/;

var result = reg.exec(text);

 

console.log(result[0]);//hello2world2s   贪婪相称

console.log(result[1]);//2

 

result = reg.exec(text);

 

 

 

console.log(result[0]);  //

 

hello2world2s

console.log(result[1]);//2

 

console.log(RegExp.$1) //2

 

 

 

test()函数: 

 

test() 方法用于检查字符串中是还是不是与正则表明式相配,再次来到值是布尔值。

语法:

 

RegExpObject.test(string)

 参数 描述 返回值

 string 被搜寻的字符串 布尔值

 

 

在非全局形式下,每一遍搜寻字符串的时候都以从最开端的位置检索,重回true|false,同期也转移RegExp布局函数的性质。  

 

var text = 'hello2world';

var reg = /w*(d)w/;

var result = reg.test(text);

console.log(result);  //true

result = reg.test(text);

console.log(result);  //true

console.log(RegExp.$1) //2

 

 

 

match()函数

 

match() 方法用于检查字符串中是或不是与正则表达式相称,重临值是数组。

stringObject.match(searchvalue)

stringObject.match(regexp)

语法:

 

 参数 描述 返回值

 seachValue 字符串 数组

 参数 描述 返回值

regexp 正则表达式 数组

 

 

在非全局情势下,每趟搜寻字符串的时候都以从最开头的岗位检索,重回的是三回寻觅结果后的数组,同一时间也改成RegExp布局函数的属性。  

 

 

 

var text = 'hello2world2sad';

var reg = /w*(d)w/;

var result = text.match(reg);  

console.log(result[0]);  //hello2world2s

console.log(result[1]);   //2

result = text.match(reg);

console.log(result[0]);  // hello2world2s

console.log(result[1]);  //2

 

 

 

3.1总结:

 

在非全局方式下:

 

  test()方法:   再次回到的连年布尔值,每趟均从字符串第三位初叶寻找字符串。

 

  exec()方法:  重返值是数组,数组中保留的连天第贰回的卓殊结果,每回搜寻均是从字符串第四人开首搜索。

 

  match()方法:再次回到值是数组,数组中保存的三次的相配结果,每一回搜寻均是从字符串首位初始寻觅,再次来到结果和exec()的结果总是同样的。

 

       在非全局形式下,exec()和match(卡塔 尔(阿拉伯语:قطر‎唯蓬蓬勃勃的分别正是调用者和函数参数地点交流而已。

 

 

 3.2.全局形式下---global=true 

exec()函数:

在大局方式下,每趟搜寻字符串的时候都以从字符串上一回寻找的完工地方上马索求,每一回回去的数组,第大器晚成项是一心相配的项,第二项是捕获项!等于RegExp.$1,同不常间也转移RegExp构造函数的习性。

 

代码如下:

 

 

var text = 'hello1hello2hello3hello4hello5hello';

var reg = /[a-z]*(d)/g;

var result = reg.exec(text);

console.log(result);   //["hello1", "1"]

 

result = reg.exec(text);

console.log(result);    //["hello2", "2"]

 

 所以,能够使用这种特点用正则表明式,遍历检索字符串。

 

test()函数:

 

  在非全局形式下,每一遍搜寻字符串的时候皆以从上一次搜索后的位置上马查找,再次回到true|false,每便搜寻都会变动RegExp布局函数的品质。

 

 

var text = 'hello1hello2hello3hello4hello5hello';

var reg = /[a-z]*(d)/g;

var result = reg.test(text);

while (result) {

  console.log(RegExp.$1); //1 2 3 4 5

  result = reg.test(text);

}

 

match()函数 

 

 match函数在大局格局下,和非全局情势下有不小的区分。其在大局形式下,一回寻觅后,重临的就算是个数组。不过数组中保留的持有相称正则表明式的项。 如下所示:

var text = 'hello1hello2hello3hello4hello5hello';

var reg = /[a-z]*(d)/g;

var result = text.match(reg);

console.log(result); //["hello1", "hello2", "hello3", "hello4", "hello5"]

 

3.2总结:

 

在大局情势下:

 

  test()方法:   再次来到的三回九转布尔值,每一次均是从上二遍找寻后的职责上马搜求字符串。

 

  exec()方法:  再次来到值是数组,数组中保存的是每二次的相称结果,每便均是从上一遍搜索后的岗位上马查找字符串。

 

  match()方法:重回值是数组,数组中保存的是富有的同盟结果,三回寻觅后,字符串会被检查实验完。后一次在寻觅的时候,总是从字符串领头此前研究,三遍回到的结果一而再同样的。

 

在全局情势下,exec()和test()每趟搜寻都是从上叁回寻找后的岗位上马向后查找。而match()总是将有所相配的结果保存在数组中。

 

 

4.字符串常用的正则表明式函数 

4.1. split()函数

   split()函数的参数能够使字符串也足以使正则表明式。重返的结果延续数组

 

var text = 'hello1hello2hello3hello4hello5hello';

var reg = /d/g;

var result = text.split(reg);

 

console.log(result);

 

 

4.2. repalce()函数

  replace()函数的参数能够使字符串也足以使正则表明式,当其为正则表明式的时候,使用如下   

 

var reg = /(^s*|s*$)/g //去掉字符串的初步和终极空格

var hello = '    dasdasd     ';

console.log(hello.replace(reg, '').length);

var reg = /(w)/g //将字符串中型Mini写换来大写

var hello = 'dasdasd';

console.log(hello.replace(reg, function () {

  return RegExp.$1.toUpperCase()

}));  //DASDASD

1.正则表达式 1.1.正则表明式的项目 正则表明式在JavaScript中,提供了意气风发种内置的布局函数--RegExp. 正则表明式有三...

  • JSON.stringify; console.log('exec_array_index: ' + re.index); console.log('exec_array_input: ' + re.input); 展现结果为: 复制代码 代码如下: match_array: ["this","i"] match_array_index: 0 match_array_input: this is a string ---------------------------- exec_array: ["this","i"] exec_array_index: 0 exec_array_input: this is a string 3. 当RegExp的global属性为true时,重回的数组是不一样的。 match方法回来的数组富含着独具相称字符串,没有子匹配字符串和附加属性。当时,lastIndex属性无效。 exec方法重返的数组格式与global为false时相似,只是这时RegExp的lastIndex属性有效,相配是从lastIndex所提醒的字符初步的,並且方法推行后会将lastIndex置为此次相称字符串的下三个字符处,所以循环试行exec方法时会依次匹配整个字符串,直到字符串最终回来null,并将lastIndex置0。 demo: 复制代码 代码如下: var s = 'this is a string'; var p = /bw*sb/g; var rm = s.match; var re; console.log('match_array: ' + JSON.stringify; console.log('match_array_index: ' + rm.index); console.log('match_array_input: ' + rm.input); while{ console.log('----------------------------'); console.log('exec_array: '
  • JSON.stringify; console.log('exec_array_index: ' + re.index); console.log('exec_array_input: ' + re.input); console.log('regexp_lastIndex: ' + p.lastIndex); } console.log('----------------------------'); console.log; console.log('regexp_lastIndex: ' + p.lastIndex); 结果: 复制代码 代码如下: match_array: ["this","is"] match_array_index: undefined match_array_input: undefined ---------------------------- exec_array: ["this","i"] exec_array_index: 0 exec_array_input: this is a string regexp_lastIndex: 4 ---------------------------- exec_array: ["is","i"] exec_array_index: 5 exec_array_input: this is a string regexp_lastIndex: 7 ---------------------------- exec_array: null regexp_lastIndex: 0 综上: 1.在一贯不g标记符时,match和exec方法效果是风度翩翩律的;有g标志符时,exec方法能够提供最完整的相配结果。 2.那边顺便提一下RegExp.test()方法,它是exec方法的简化版,有协作结果就重返true,未有相配结果就重临false,实行进度与exec是如出风度翩翩辙的。相当于。 3.RegExp的lastIndex属性在有g标识符,且在exec和test方法中是一蹴而就的,别之处是没用的。

 摘自  Jalen

 

RegExp对象的第一形式:*********************/ /* * exec() : 该办法专门为捕获组织设立计的。 @param : 接收一个参数,要动用格局的字符串...

小心:当未有大局的变量g时,由于index和lastindex的值不会转移(除非手动纠正卡塔 尔(阿拉伯语:قطر‎,则会引致每一回的陪相配都以从字符串的头领头的,所以只要字符串中有极其,就可导导致死循环,那时设置g后,会自行改换前边的八个属性,会挨个向后卓殊直到未有相称项退出循环

与match方法差异exec属石钟山则表明式对象的方法.
语法:var result1 = regexp.exec(str);
regexp:正则表达式(能够直接定义也可以利用RegExp的章程定义卡塔尔str:要同盟的字串
exec与match的涉嫌便是exec(g有未有都无影响)就等价于不满含g全局标识的match.即重返数组arr[0]为合作的全部串.其他的为括号里捕获的字符串(当含有子匹配时卡塔 尔(英语:State of Qatar).

var str="click.41646ass.sss";

    document.write(ret+"</br>");

(1卡塔尔、假诺exec施行的正则表明式未有子表明式(小括号内的内容,如/abc(s*)/中的(s*) ),如果有合营,就赶回第一个门户万分的字符串内容,当时的类数组中的第叁个要素为同盟的剧情,(类数组中还含有有index:匹配字符串在原始字符串中之处,input:输入的字符串卡塔尔若无相配重返null;

console.log(str.match(/W3cschool/g));

********子表达式捕获的原委就是指的第一个精光合作的字符串中在表明式相称的部分:
var a=/^([^.]*)(?:.(.+)|)$/;

(2卡塔尔国replace:str.replace(reg,replaceStr);将同盟的字符用前面包车型地铁替换,第二个参数能够传递为function,其重返值将替换钦命的字符

ab
ret.input=abcdef12ab34cd56ef
ret.index=0
RegExp.lastIndex =2
ab
ret.input=abcdef12ab34cd56ef
ret.index=8
RegExp.lastIndex =10

* *

(3卡塔 尔(英语:State of Qatar)exec再次回到的是类数组而match再次回到的则是数组

  var str="visit W3cschool  a W3cschool bull";

本文由必威发布于必威-运维,转载请注明出处:数组的第0个元素是整个pattern的第一个匹配字符串

相关阅读