zoukankan      html  css  js  c++  java
  • JS-正则表达式-替换

    利用正则表达式将源字符串中的某一部分替换成另一部分(只能替换文字字母,字符不能替换):

    var sToChange = "The sky is red";

    var result = sToChange.replace("red", "blue");

    alert(result); //输出:The sky is blue
    上面的 replace 方法第一个参数是一个字符串,第二个是要替换的部分,但这样只能替换一次.要将源字符串中所有的red都替换成blud,可以这样:

    var sToChange = "The sky is red really red";

    var reg = /red/gi

    var result = sToChange.replace(reg, "blue");

    alert(result); //输出:The sky is blue really blue
    上面第一个参数是一个正则表达式,第二个是要替换成的部分.还有另一种做法,第一个参数是正则表达式,第二个是处理函数:

    var sToChange = "The sky is red really red";

    var reg = /red/gi

    var result = sToChange.replace(reg, function(sMatch){ return "blue"; });

    alert(result); //输出:The sky is blue really blue

    上面函数里面的sMatch表示通过匹配,从源字符串中获得到的已匹配的字符.如上例中,模式从源字符串中匹配出来的始终都是"red";更直观的例子如下:

    var sTo = /(fuck|shit|ahswhole|bitch)/g;

    var sMyStr = "the son of the bitch,fuck you ,like a piece of shit!ahswhole!";

    var resultStr = sMyStr.replace(sTo, function(sMatch){ return sMatch.replace(/./g, "*"); });

    alert(resultStr); //输出:the son of the *****,**** you ,like a piece of ****!********!

    可以看出输出的星号是不等的,因为匹配的时候,当表达式匹配到bitch的时候,传入函数的就是bitch,然后函数将它替换成:*****,五个星号,然后返回;然后继续匹配,碰到fuck,然后传入函数,这时sMatch就是:fuck,然后将它替换成:****四个星号.依此类推.

     
    另一实例;
    var sToChange = document.getElementByIdx_x("abc").innerHTML;
    var reg = /<img.*?src="(.*?)".*?>/gi
    var result = sToChange.replace(reg, function(sMatch){
      var backStr = "<a href="" + RegExp.$1 + "" class="highslide" onclick="return hs.expand(this)">";
      backStr += sMatch;
      backStr += "</a>";
      backStr += "";
      return backStr;
    });
    document.getElementByIdx_x("abc").innerHTML = result;
  • 相关阅读:
    Unity3D研究院之Assetbundle的实战(六十三)
    Unity3D研究院之Assetbundle的原理(六十一)
    常见图片格式详解
    unity 查看打包资源占用
    MUI框架-04-切换页面头部文字重叠
    MUI框架-03-自定义MUI控件样式
    MUI框架-02-注意事项-适用场景-实现页面间传值
    MUI框架-01-介绍-创建项目-简单页面
    安卓app开发-05-Android xml布局详细介绍
    安卓app开发-04- app运行的运行和调试
  • 原文地址:https://www.cnblogs.com/xjt360/p/3552586.html
Copyright © 2011-2022 走看看