match方法使用正则表达式模式对字符串执行搜索,并将包含搜索的结果作为数组返回。需要stringbj . match(rgeXP)parameter stringbj。要查找的字符串对象或字符串文字。需要RgExp。是包含正则表达式模式和可用标志的正则表达式对象。它也可以是包含正则表达式模式和可用标志的变量名或字符串。其他解释与exec相同,只是如果match的表达式与全局标记g匹配,所有匹配都将不带循环出现,但所有匹配都不包括子匹配。示例1:函数匹配演示(){var r,re;//声明一个变量。var s=“西班牙的雨主要落在平原上”;re=/(a)in/ig;//创建正则表达式模式。r=s . match(re);//尝试匹配搜索字符串。document . write(r);//返回的数组包含所有“ain”、r[0]、r[1]、r[2]和r[3”的四个匹配项。//但是没有子匹配a.}输出结果:ain,ain,ain,ain exec方法使用正则表达式模式搜索字符串,并返回搜索结果的第一个值(数组);如果匹配失败,则返回null。需要RgExp.exec(str)参数RgExp。包含正则表达式模式和可用标志的正则表达式对象。需要Str。要在其中执行查找的字符串对象或字符串。返回的数组包含:输入:整个搜索字符串的值;Index:匹配结果的位置(位);LastInput:下一个匹配结果的位置;Arr:结果值,arr[0]是完全匹配的结果,arr[1,2.]是表达式中()的子匹配,从左到右是1,2.示例2:复制的代码如下: function regexp test(){ var src=' http :http://sumsung753.blog.163.com/blog/ilovyou!';var re=/ w/g;//注意G将匹配全文,如果不匹配,则总是只返回第一个匹配。var arrwhile((arr=re.exec(src))!=null){ //exec使arr返回第一个匹配项,而循环一次将使re在g. document.write中查找下一个匹配项(arr . index '-' arr . last index ' : ' arr ' br/');for(arr中的键){ document . write(key '=' arr[key]' br/');} document . write(' br/');} } window . onload=RegExptest();输出结果:0-1:I //0为索引,其中I为,1为下一个匹配位置。投入=我爱你!index=0 last index=1 0=I 2-6: love input=我爱你!index=2 lastIndex=6 0=爱7-10:你输入=我爱你!Index=7 lastIndex=10 0=you说明:根据手册,exec只返回匹配结果的第一个值。例如,如果上面的例子中没有使用while循环,那么它将只返回‘I’(虽然I空格后的love和You都符合表达式),而不管re表达式是否标记了全局G。但是,如果为正则表达式设置了全局标志g,exec将从lastIndex值指示的位置开始搜索。如果未设置全局标志,exec将忽略lastIndex的值,并从字符串的开头开始搜索。有了这个特性,可以反复调用exec遍历所有匹配,相当于用g标志匹配。当然,如果正则表达式忘记使用g而使用循环(比如while,for等。),exec每次都会循环第一个,导致无限循环。exec的输出将包含子匹配。示例3:复制代码如下: function exec demo () {var r,re;//声明一个变量。var s=“西班牙的雨主要落在平原上”;re=/[ w]*(ai)n/ig;r=re.execdocument . write(r ' br/');for(r中的键){ document.write(键'-' r[key]' br/');} } window . onload=ExecDemo();输出:rain,ai输入-西班牙的rain主要落在普通索引中-4最后一个索引-8 0-rain 1-ai测试方法返回一个布尔值,该值指示搜索到的字符串是否与给定的正则表达式匹配。需要Rgexp.test(str)参数Rgexp。包含正则表达式模式或可用标志的正则表达式对象。需要Str。要在其上测试查找的字符串。测试方法检查字符串是否与给定的正则表达式模式匹配,如果匹配,则返回true,否则返回false。
示例4:复制代码如下:函数测试演示(re,s){ vars 1;If (re.test(s)) s1='匹配正则表达式';Else s1='不匹配的正则表达式';返回(' ' ' s ' ' ' S1 ' ' ' re . source ' ' ');} window . onload=document . write(TestDemo(/ab/,' cdef ');输出:“cdef”与正则表达式“ab”不匹配。注意:test()继承了正则表达式的lastIndex属性,表达式在匹配全局标志g时要注意.示例5:复制代码如下:函数测试demo () {var r,re;//声明一个变量。var s=' Ire=/I/ig;//创建正则表达式模式。document . write(re . test)“br/”);//返回布尔结果。document . write(re . test)“br/”);document.write(重新测试);} TestDemo();输出:true false true第二次调用test()时,lastIndex指向下一个匹配的位置1,所以第二次匹配不成功,lastIndex再次指向0,相当于第三次再次匹配。以下示例显示了test的lastIndex属性:示例6:复制代码如下:函数test demo () {var r,re;//声明一个变量。var s=' Ire=/I/ig;//创建正则表达式模式。document . write(re . test)“br/”);//返回布尔结果。document . write(re . last index);//返回布尔结果。} TestDemo();输出:true 1解决方法:每次将test()的lastIndex属性重定向为0,re . last index=0;搜索方法返回匹配正则表达式搜索的第一个子字符串的位置(偏移量)。需要stringbj . search(rGexP)parameter stringbj。要查找的字符串对象或字符串文字。需要RgExp。包含正则表达式模式和可用标志的正则表达式对象。注意:如果找到,返回子字符到开头的偏移位;否则,返回-1。示例6:复制代码如下:函数搜索demo () {var r,re;//声明一个变量。“西班牙的雨主要落在平原上。”;re=/falls/I;//创建正则表达式模式。re2=/Tom/I;r=s . search(re);//找到字符串。R2=s . search(re2);return(' r:' r ';R2:‘R2’;//返回布尔结果。} document . write(search demo());输出:r:18;R2:-1 replace方法根据正则表达式在文字替换后返回字符串的副本。StringObj。需要replace (rgexp,replace text)parameter string gobj。执行替换的字符串对象或字符串文字。替换方法不会修改字符串。需要RgExp。是包含正则表达式模式或可用标志的正则表达式对象。它也可以是字符串对象或文本。如果rgExp不是正则表达式对象,它将被转换为字符串并被精确搜索。不要试图将字符串转换为正则表达式。需要ReplaceText。是String对象或字符串文字,该对象中包含的文字用于替换stringObj中匹配的rgExp中的每个位置。在Jscript 5.5或更高版本中,replaceText参数也可以是返回替换文本的函数。说明replace方法的结果是已经完成指定替换的stringObj对象的副本。表示指定匹配项的替换项,其他未更改项作为StringObj返回。ECMAScript v3规定replace()方法的参数替换可以是函数,而不是字符串。在这种情况下,每个匹配都调用这个函数,它返回的字符串将被用作替换文本。函数的第一个参数是与模式匹配的字符串。以下参数是与模式中子表达式匹配的字符串,可以有0个或更多这样的参数。下面的参数是一个整数,它声明匹配出现在stringObject中的位置。最后一个参数是stringObject本身。结果是一个字符串值,用函数调用的相应返回值替换每个匹配的子字符串。函数可以用作更复杂操作的参数。示例:复制代码如下: function f2c(s){ var test=/( d()。 d *)?)F b/g;//解释华氏温度的可能模式:123华氏度或123.4华氏度.
请注意,这里使用的是g模式返回(s. replace (test,function (regstr,$1,$2,$3,new strobj){ return((' br/' regstr ' br/')($ 1-32)* 1/2)' c ' ' br/'///的。} ) );} document . write(f2c(' water : 32.2F和oil : 20.30 F . ');输出:Water: //不匹配正则的字符,输出32.2F //正则匹配的第一个字符串的原始字符串regstr 0.1000000000000142c正则匹配的第一个字符串的第一个子模式匹配的替换结果$1 .2 //正则匹配的第一个字符串的第二个子模式匹配项的替换结果,这里, 我们没有用$2 7 //匹配正则性$3 water: 32.2f和oil: 20.30f的第一个字符串的第一个子匹配的偏移量来替换它//原始字符串newstrobj和oil 3360//不匹配正则性的字符是20.30F //。 正则匹配的第二个字符串的原始字符串-5.85C //第一个子模式的替换结果和正则匹配的第二个字符串的匹配. 30//正则匹配的第二个字符串的第二个子模式匹配项的替换结果,这里我们没有替换22 //正则匹配的第二个字符串的第一个子匹配的偏移量,即water3360 32.2f和oil 3360 20.30 f//原始字符串。//我们使用了不规则匹配字符上面的所有函数参数。实际上,我们只需要用xxC替换xxF。根据要求,我们不需要写那么多参数。示例:复制代码如下: function f2c(s){ var test=/( d()。 d *)?)F b/g;//说明华氏温度的可能模式有:123F或123.4F Return(s . replace(test,function (strobj,$ 1){ Return($ 1-32)* 1/2)' c ');} ) );} document . write(f2c(' water : 32.2F和oil : 20.30 F . ');输出:water: 0.100000000000142c和oil:-5.85c .更多应用:示例9:复制代码如下: function f2c(s){ var test=/([ d]{ 4 })-([ d]{ 1,2。return(s.replace (test,function($0,$1,$2,$ 3){ return($ 2 '/' $ 1);} ) );} document . write(f2c(' today : 2011-03-29 ');输出:today: 03/2011 split方法将字符串拆分为子字符串,然后以字符串数组的形式返回结果。StringObj。需要split([分隔符[,限制]]参数Stringobj。要分解的字符串对象或文本。拆分方法不会修改此对象。分隔符可选。一个字符串或正则表达式对象,标识一个或多个字符是否用于分隔字符串。如果忽略此选项,将返回包含整个字符串的单个元素数组。极限选项。该值用于限制返回数组中的元素数量。说明split方法的结果是一个字符串数组,应该分解stingObj中出现分隔符的每个位置。分隔符不会作为任何数组元素的一部分返回。示例10:复制代码如下:函数split demo () {var s,ss;“西班牙的雨主要落在平原上。”;//正则表达式,用S分隔。ss=s . split(/s/I);返回(ss);} document . write(SplitDemo());输出:rain in的exec()方法、match()方法和search()方法,pain fall,主要在plain.js正则表达式中;先看代码:var气孔=' test,tes,tst,tset,test,tesyt,stes ';var REes=/es/gi;alert(reEs.exec(气孔匹配));alert(气孔匹配(REEs));alert(气孔匹配. search(REEs));三个弹出框如下:。
分析结果如下:1 .RegExp的exec()方法有一个字符串参数并返回一个数组,数组的第一个条目是第一个匹配项;其他是反向引用。所以返回的第一个结果是第一个匹配值es(不区分大小写)。2.String对象有一个match()方法,该方法返回字符串中包含的所有匹配数据。此方法调用字符串对象,并将其传递给RegExp对象。所以第二个弹出语句返回所有匹配正则表达式的数组。3.search()的字符串方法类似于indexOf(),但它使用了一个RegExp对象,而不仅仅是一个子字符串。search()方法返回第一个匹配值的位置。所以第三个弹出的是“1”,也就是第二个字符匹配。请注意,search()方法不支持常规表达式(带参数g)的全局匹配。