当前位置主页 > 资料库 > 前端教程 > 正则表达式-使用正则表达式的字符串对象方法

正则表达式-使用正则表达式的字符串对象方法

我们在程序中除了可以使用正则表达式对象的方法test()exec()进行字符串测试和匹配之外,还可以使用String对象的4个方法来完成这些任务。在完成某些任务时,使用这些方法可能会更加简单有效。这4个方法如下表所示:

方法 功能
match(regex) 在一个数组中返回与正则表达式regex相匹配的子串
replace(regex,replacement) 将字符串中的regex指定的子串替换为子串replacement
search(regex) 查找正则表达式regex指定的模式在字符串中的开始位置
split(regex) 使用正则表达式regex分割字符串,并将分割的结果以数组的形式返回
match()方法

字符串对象的match()方法用于在字符串中搜索匹配的子串,并将匹配的结果在一个数组中返回。如果未找到匹配的子串,那么返回null。当在正则表达式中指定了g选项之后,match()方法进行全局搜索,并返回包含所有匹配子串的数组。match()方法的语法格式为:

matchArr = myString.match(regex);
                            

其中,“myString”为要搜索的字符串,“regex”为指定的匹配模式的正则表达式。

下面是一个match()方法的例子。

var matchArr = new Array();
var mystring = "人在智慧上应当是明豁的,道德上应该是清白的,身体上应该是清洁的。";
var regex = /应[当该]/g;
var matchArr = mystring.match(regex);
document.write("匹配子串的个数为: "+matchArr.length+"<br>");
for (var i = 0; i < matchArr.length; i++) {
  document.write("第"+i+"个匹配的子串为: "+matchArr[i]+ "<br>");
}                              
                            

执行上面的代码,我们将得到下面的结果:

匹配子串的个数为: 3
第0个匹配的子串为: 应当
第1个匹配的子串为: 应该
第2个匹配的子串为: 应该                              
                            

上面的例子中,将match()方法的返回结果保存在数组matchArr中,然后输出了数组的长度。regex中的匹配模式使用了[]字符,这会在后面做详细介绍。通过循环我们可以看到数组中保存的所有与模式匹配的子串。

replace()方法

字符串对象的replace()方法用于搜索字符串,并用另一个字符串替换搜索到的字符串。在指定搜索模式时,可以将其指定为一个字符串,也可以指定为一个正则表达式。当将匹配模式指定为正则表达式时,正则表达式的i选项用于指定字符串在搜索过程中不区分大小写,g选项用于指定进行全局搜索,即替换匹配的所有子串。replace()方法还能够与分组元字符配合使用,这将在后面介绍。

replace()方法的语法格式为:

originalString = sourceString.replace(regex,value);
                            

其中,originalString是替换完成后的字符串,sourceString是替换前的字符串,regex是指定匹配模式的正则表达式,value是替换后的内容。

下面是一个使用replace()方法的例子。

var oldString = "不论是狮子还是羚羊,都要奔跑;不论是贫穷还是富有,都要去奋斗。"
var regex = /不论/g;
var newString = oldString.replace(regex,"不管");
document.write(newString);                              
                            

在上面的例子中,使用replace()方法来搜索oldString字符串,并将字符串中的“不论”修改为“不管”。得到的结果是:

不管是狮子还是羚羊,都要奔跑;不管是贫穷还是富有,都要去奋斗。                             
                            
search()方法

search()方法在字符串中搜索指定的匹配模式,找到该模式时,返回模式出现的开始位置,这个位置从0开始计数。如果未找到匹配的模式,那么会返回-1。

对于简单的字符串搜索,字符串对象的indexOf()方法就够用了,但是对于比较复杂的匹配搜索,我们应该使用search()方法,通过正则表达式来指定匹配模式。

search()方法的语法格式为:

var index = myString.search(regex);
                            

其中,index保存了search()方法的返回值,该值表示所找到的匹配模式在字符串中出现的位置(从0开始计数)。如果没有找到,那么index的值为-1。

下面是一个使用search()方法的例子。

var myString = "人不能象走兽那样活着,应该追求知识和美德。";
var regex = /知识/g;
var index = myString.search(regex);
document.write("在字符串的第 "+index+" 个字符位置找到了匹配模式: "+regex);
                            

执行上面的代码得到的结果如下:

在字符串的第 15 个字符位置找到了匹配模式: /知识/g                               
                            

从0开始计数,匹配模式“知识”位于字符串的第15个字符(一个汉字算一个字符)的位置。

split()方法

字符串对象的split()方法将字符串按指定的模式分割为多个子串,并保存在数组中返回。我们通常把分割字符串的模式字符称为分割符。在split()方法中,分割符使用正则表达式来指定,这样可以分割要求十分复杂的字符串。

split()方法的语法格式为:

splitArr = myString.split(regex);
                            

其中splitArr保存split()方法返回值的数组,regex为正则表达式,这个表达式可以非常简单,也可以非常复杂。

下面是一个使用split()方法的例子。

var splitArr = new Array();
var myString = "中国、美国、英国、法国、俄罗斯";
var regex = /、/;
splitArr = myString.split(regex);
for (var i = 0; i < splitArr.length; i++) {
  document.write(splitArr[i]+ "<br>");
}                   
                            

在这个例子中,使用的正则表达式模式为一个顿号,用它来分割字符串myString,得到的结果如下:

中国
美国
英国
法国
俄罗斯                              
                            

我们也可以使用更为复杂的正则表达式模式,例如下面的例子:

var splitArr = new Array();
var myString = "中国、美国;英国、法国 俄罗斯";
var regex = /[、; ]/;
splitArr = myString.split(regex);
for (var i = 0; i < splitArr.length; i++) {
  document.write(splitArr[i]+ "<br>");
}                   
                            

在上面的代码中,使用的正则表达式模式为顿号、分号和空格中的任何一个来分割字符串myString,得到的结果和上例相同。

相关阅读
Previous:
上一篇:正则表达式-创建正则表达式
Next:
下一篇:正则表达式-正则表达式的元字符
返回顶部