网站源码-图片-资料下载-学习资料-牛资料网!只做精品资料网
  • 首 页
  • 正则表达式-使用正则表达式的字符串对象方法
    时间:2019-09-09 11:19 来源:www.xyhndec.com 编辑:免费资料 浏览:

    本文将继续了解:“正则表达式-使用正则表达式的字符串对象方法”。

     

    我们在程序中除了可以使用正则表达式对象的方法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);
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

    其中,“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>");
    }
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    匹配子串的个数为: 3
    0个匹配的子串为: 应当
    1个匹配的子串为: 应该
    2个匹配的子串为: 应该
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    replace()方法

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

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

    originalString = sourceString.replace(regex,value);
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

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

    var oldString = "不论是狮子还是羚羊,都要奔跑;不论是贫穷还是富有,都要去奋斗。"
    var regex = /不论/g;
    var newString = oldString.replace(regex,"不管");
    document.write(newString);
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    不管是狮子还是羚羊,都要奔跑;不管是贫穷还是富有,都要去奋斗。
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html
    search()方法

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

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

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

    var index = myString.search(regex);
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

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

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

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

    在字符串的第 15 个字符位置找到了匹配模式: /知识/g
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    split()方法

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

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

    splitArr = myString.split(regex);
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

    其中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>");
    }
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    中国
    美国
    英国
    法国
    俄罗斯
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    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>");
    }
    
    本段代码来自 https://www.jiangweishan.com/article/js1473177600647.html

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

    郑重声明:
    牛资料网所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系牛资料网索要。
    如有侵犯您的版权,请及时联系QQ:964613048,我们尽快处理。

    JavaScript面向对象-基于原型链实现继承JavaScript面向对象-基于原型链实现继
    JavaScript事件-事件流JavaScript事件-事件流
    正则表达式-正则表达式的元字符正则表达式-正则表达式的元字符
    推荐栏目
    • 客服:我们竭诚为您服务!
    • 客服:我们竭诚为您服务!