javascript replace高级用法

访客3年前黑客工具545

在前端与后台交互的时刻我们通常都需要将后台通报的数据绑定到html中,这个绑定数据的方式我们通常是使用jQuery或者使用原生的innerHTML举行绑定,固然也可以使用artTemplate模板来绑定数据,那么artTemplate模板它绑定数据的原理是什么呢?实在它就是利用了replace()方式。

对于正则replace约定了一个特殊符号符”$”:

1)、$i(i取值局限1~99):示意从左到右正则子表达式所匹配的文本
2)、$&:示意与正则表达式匹配的所有文本
3)、$`(`:1旁边的谁人键):示意匹配字符串的左边文本
4)、$'(':单引号):示意匹配字符串的右边文本
5)、$$:示意$转移


1、replace基本用法

<script type="text/javascript">
    /*要求将字符串中所有的a所有用A取代*/

    var str = "javascript is great script language!";
    //只会将之一个匹配到的a替换成A
    console.log(str.replace("a","A"));
    //只会将之一个匹配到的a替换成A。由于没有在全局局限内查找
    console.log(str.replace(/a/,"A"));
    //所有a都被替换成了A
    console.log(str.replace(/a/g,"A"));
</script>


1.1、replace基本用法之替换移除指定class类

<script type="text/javascript">
    /*要求将下面这个米素中的unabled类移除掉*/

    <div class=”confirm-btn unabled mb-10” id=”j_confirm_btn”>提交</div>
    var classname = document.getElementById(“j_confirm_btn”).className;
    /*(^|\\s)示意匹配字符串开头或字符串前面的空格,(\\s|$)示意匹配字符串末端或字符串后面的空格*/
    var newClassName = classname.replace(/(^|\\s)unabled(\\s|$)/,””);
    document.getElementById(“j_confirm_btn”).className = newClassName;
</script>


2、replace高级用法之 ---- $i

2.1、简朴的$i用法

<script>
    /*要求:将字符串中的双引号用"-"取代*/

    var str = '"a", "b"';
    console.log(str.replace(/"[^"]*"/g,"-$1-"));
    //输出效果为:-$1-, -$1-
    /*注释:$1就是前面正则(/"[^"]*"/g)所匹配到的每一个字符。*/
</script>


2.2、$i与分组连系使用

<script>
    /*要求:将下面字符串替换成:javascript is fn.it is a good script language*/
    
    var str = "javascript is a good script language";
    console.log(str.replace(/(javascript)\s*(is)/g,"$1 $2 fn.it $2"));
    /*注释:每一对括号都代表一个分组,从左往右划分代表之一个分组,第二个分组...;如上"*(javascript)"为之一个分组,
"(is)"为第二个分组。$1就代表之一个分组匹配的内容,$2就代表第二个分组匹配的内容,依此类推...*/
</script>


2.3、$i与分组连系使用----关键字高亮显示

当我们使用谷歌搜索的时刻我们会发现我们搜索的关键字都被高亮显示了,那么这种效果用JavaScript能否显示呢?谜底是可以的,使用replace()很轻松就搞定了。
<script>
    /*要求:将下列字符串中的"java"用红色字体显示*/
    
    var str = "Netscape在最初将其脚本语言命名为LiveScript,厥后Netscape在与Sun互助之后将其改名为JavaScript。
JavaScript最初受Java启发而更先设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java。
但JavaScript的主要设计原则源自Self和Scheme。";

    document.write(str.replace(/(java)/gi,'<span style="color: red;font-weight: 800;">$1</span>'));

    /*注释:必须要开启全局搜索和忽略大小写,否则匹配不到所有的”java”字符*/
</script>


2.4、反向分组----分组的反向引用

在正则中,当我们需要匹配两个或多个延续的相同的字符的时刻,就需要用到反向引用了,查找延续重复的字符是反向引用最简朴却也是最有用的应用之一。上面的”$i”也是反向分组的一种形式,这里再先容另一种反向分组。
<script type="text/javascript">
    /* /ab(cd)\1e/ 这里的 \1 示意把第1个分组的内容重复一遍*/

    console.log(/ab(cd)\1e/.test("abcde"));//false
    console.log(/ab(cd)\1e/.test("abcdcde"));//true

    /*要求:将下列字符串中相领重复的部门删除掉"*/
    var str = "abbcccdeee";
    var newStr = str.replace(/(\w)\1+/g,"$1");
    console.log(newStr); // abcde
</script>


3、replace高级用法之参数二为函数

replace函数的第二个参数不仅可以是一个字符,还可以是一个函数!


3.1、参数二为函数之参数详解

<script>
    var str = "bbabc";
    var newStr = str.replace(/(a)(b)/g,function (){
    console.log(arguments);//["ab", "a", "b", 2, "bbabc"]
     /*参数依次为:
        1、整个正则表达式所匹配到的字符串----"ab"
        2、之一个分组匹配到的字符串,第二个分组所匹配到的字符串....依次类推一直            到最后一个分组----"a,b"
        3、此次匹配在源字符串中的下标,返回的是之一个匹配到的字符的下标----2
        4、源字符串----"bbabc"
      */
    })
</script>


3.2、参数二为函数之首字母大写案例

<script>
    /*要求:将下列字符串中的所有首字母大写*/
    
    var str = "Tomorrow may not be better, but better tomorrow will surely come!";
    var newStr = str.replace(/\b\w+\b/gi,function (matchStr){
        console.log(matchStr);//匹配到的字符
        return matchStr.substr(0,1).toUpperCase() + matchStr.substr(1);
    });
    console.log(newStr);
</script>


3.3、参数二为函数之绑定数据----artTemplate模板焦点

<h1>周星驰喜剧电影:</h1>
<div id="content"></div>
<script type="text/javascript">
    var data = {
        name: "功夫",
        protagonist: "周星驰"
    },
    domStr = '<div><span>名称:</span><span>{{name}}</span></div><div><span>导演:</span><span>{{protagonist}}</span> </div>';

    document.getElementById("content").innerHTML = formatString(domStr,data);
    /*绑定数据的焦点就是使用正则举行匹配*/
    function formatString(str,data){
        return str.replace(/{{(\w+)}}/g,function (matchingStr,group1){
            return data[group1];
        });
    }
</script>


4、replace高级用法之获取与正则表达式匹配的文本

4.1、replace高级用法之获取与正则表达式举行匹配的源字符串

<script>
    var str = "i am a good man";
    var newStr = str.replace(/good/g,"$&");
    console.log(newStr);//效果:输出i am a good man
    /*注释:在这里”$&”就是与正则表达式举行匹配的谁人源字符串*/
</script>


4.2、replace高级用法之获取正则表达式匹配到的字符

<script>
    /*要求:将"i am a good man"替换成"i am a good-gond man" */
    
    var str = "i am a good man";
    var newStr = str.replace(/good/g,"$&-$&");
    console.log(newStr);
    /*注释:在这里”$&”可以获取到前面正则表达式匹配的内容,如上面的”$&”就是正则表达式匹配到的”good”*/
</script>


5、replace高级用法之获取正则匹配的左边的字符

<script>
   /*要求:将下列字符串替换成"java-java is a good script"*/

    var str = "javascript is a good script";
    var newStr = str.replace(/script/,"-$`");
    console.log(newStr)
    /*注释:"$`"获取的是正则左边的内容,如上正则中"script"字符前面的是"java","-$`"就是"-java","-$`"会把script替换掉。*/
</script>


6、replace高级用法之获取正则匹配的右边的字符

返回列表

上一篇:loopback

下一篇:mock.js模拟数据

相关文章

现代安全帽的发明是受到了什么动物的启发 蚂蚁庄园6月3日答案

现代安全帽的发明是受到了什么动物的启发 蚂蚁庄园6月3日答案

现代安全帽的发明是受到了什么动物的启发?蚂蚁庄园6月3日问题答案。 6月3日蚂蚁庄园答案题目:现代安全帽的发明是受到了什么动物的启发? 正确答案:啄木鸟...

求一个黑客高手,世界十大黑客组织

求一个黑客高手,世界十大黑客组织

一、求一个高手黑客接单流程 1、找黑客流程如果您不小心操作了Netspyexe,它将告诉Windows,每次您打开计算机时,它将运行它,然后再次在您的计算机上。求一个高手世界十大组织下一个村庄在米特尼...

微信隐藏聊天记录|恢复教程|微信聊天记录怎么恢

国际黑客组织“匿名者”本月初攻击朝鲜对韩宣传网站“我们民族之间”,分批公布网站1.5万多个会员账号信息,其中数千会员账号来自韩国境内。   韩国国家情报院5日对公开名单着手展开调查,以确定韩国境内账...

的季节(什么的季节)

夏天是一个欣欣向荣的季节秋天是一个落叶归根的季节冬天是一个静谧典雅的季节~ 秋天既是收获的季节``还是播种的季节。是一个思乡的季节、是一个红叶的季节、是一个收获的季节。秋天还是欢庆的季节。尊师重教的教...

庞德罗莎冰淇淋怎么加盟?总部给你满意的答案

庞德罗莎冰淇淋怎么加盟?总部给你满意的答案

正是因为有浩瀚的加盟商看中饮品行业的商机所以纷纷前来加盟,这就导致了饮品市场的竞争压力不绝的上涨。而庞德罗莎冰淇淋加盟可以或许在行业中脱颖而出,不只有着强大的竞争实力,更是有着高人气的口碑,在市场中不...

有没有什么软件能监控别人的手机(有没有一款软件可以监控别人手机)

有没有什么软件能监控别人的手机(有没有一款软件可以监控别人手机)

本文导读目录: 1、有没有可以手机远程协助另一个手机的软件 2、如何用自己的手机远程控制别人的手机 3、如何远程控制别人手机? 4、怎样远程控制别人的手机? 5、有没有用手机远程控制另...