repalce

在这里插入图片描述

1、replace基本用法

 <script>/*要求将字符串中所有的a全部用A代替*/var str = "javascript is great script language!";//只会将第一个匹配到的a替换成Aconsole.log(str.replace("a", "A")); // => jAvascript is great script language!//只会将第一个匹配到的a替换成A。因为没有在全局范围内查找console.log(str.replace(/a/, "A")); // => jAvascript is great script language!//所有a都被替换成了Aconsole.log(str.replace(/a/g, "A")); // => jAvAscript is greAt script lAnguAge!
</script>

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

<div class="confirm-btn unabled mb-10" id="j_confirm_btn">提交</div>
<script>/*要求将下面这个元素中的unabled类移除掉*/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-, -$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 fn.it is a good script language/*解释:每一对括号都代表一个分组,从左往右分别代表第一个分组,第二个分组...;如上"*(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>/* /ab(cd)\1e/ 这里的 \1 表示把第1个分组的内容重复一遍*/console.log(/ab(cd)\1e/.test("abcde")); // => falseconsole.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函数的第二个参数不仅可以是一个字符,还可以是一个函数!

<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、此次匹配在源字符串中的下标,返回的是第一个匹配到的字符的下标----24、源字符串----"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); // => Tomorrow May Not Be Better, But Better Tomorrow Will Surely Come!
</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-good man" */var str = "i am a good man";var newStr = str.replace(/good/g, "$&-$&");console.log(newStr); // => i am a good-good man/*解释:在这里”$&”可以获取到前面正则表达式匹配的内容,如上面的”$&”就是正则表达式匹配到的”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); // => java-java is a good script/*解释:"$`"获取的是正则左边的内容,如上正则中"script"字符前面的是"java","-$`"就是"-java","-$`"会把script替换掉。*/
</script>

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

<script>/*要求:将下列字符替换成"java is a good language!it is a good script is a good script"*/var str = "javascript is a good script";var newStr = str.replace(/script/, " is a good language!it$'");console.log(newStr); // => java is a good language!it is a good script is a good script/*解释:"$'"获取的就是str右边的内容,如上正则中"$'"就是" is a good script"。" is a good language!it$'"会把正则匹配到的"script"替换掉*/
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win8环境下 IIS6部署MVC网站出现的无法显示此网页错误

在Win7环境下做好的网站&#xff0c;新的Win8环境发布出现如下图错误&#xff1a; 解决方法如下&#xff1a; 运行&#xff1a; 转载于:https://www.cnblogs.com/xiashenbin/p/4098274.html

软件质量管理之痛

相信不少软件开发公司都存在质量管理部门。而且&#xff0c;如果一个公司稍微正规的话,一定会使用一个缺陷跟踪软件系统&#xff0c;比如开源的Bugzilla&#xff0c;或是IBM的ClearQuest等等。那质量管理部门是如何跟踪和控制软件质量的呢&#xff1f;毫无疑问&#xff0c;需要…

COM、COM+和DCOM的定义和区别

From:http://zouyou1986.blog.163.com/blog/static/1772625920105461931335/ 解释COM、COM和DCOM的定义和区别&#xff1f; COM是组件对象模型,是实现3/N层应用的基础,它的目的就是组件化,应用程序分层.DCOM是分布式的COM,也就说可以远程的创建,最初它利用远程自动化来实现,用…

OpenCV:SURF算法浅析

引子&#xff1a; 课题需要SURF特征提取算法&#xff0c;在运动中提取摄像头图像中的特征点&#xff0c;并进行跟踪匹配&#xff0c;以此估计运动状态。开始找到了SIFT算法&#xff0c;SIFT特征提取具有极强的适应能力&#xff0c;但运算量稍大&#xff0c;后来就有了SURF特征提…

Codeforces Round #277(Div 2) A、B、C、D、E题解

转载请注明出处&#xff1a; http://www.cnblogs.com/fraud/ ——by fraud A. Calculating Function 水题&#xff0c;判个奇偶即可 1 #include <iostream>2 #include <sstream>3 #include <ios>4 #include <iomanip>5 #include <functio…

Vue 中使用watch监听$route 无效问题

Vue 中使用watch监听$route失效问题&#xff01; 今天在项目操作中发现一个问题&#xff0c;在watch里面监听$route变化&#xff0c;发现并没有监听到&#xff0c;查阅了一些资料最终解决&#xff0c;现写出与大家共同分享&#xff0c;也忘出现此问题的同学也能顺利解决 路由词…

oa 系统后期安装服务

http://www.didibabawu.com/oa.htm

.idl与.odl的区别

From: http://hi.baidu.com/%CD%E6%CA%AF%CD%B7%B5%C4%D0%A1%BA%A2/blog/item/1b9a942fe8cfcf594ec22629.html 1. .odl和.idl在com中的功能相同. 前者是ActiveX中的 后者是ATL中. 可在前者的文件中 用 #import "XXXXX.idl" 的方式包含后者. 反过来没有试过. 2. …

Mac OS X 安装和配置ngrok

一、下载ngrok 到官网下载ngrok: https://ngrok.com/download 二、配置ngrok 进入终端&#xff0c;执行以下命令&#xff1a; open -e .bash_profile 修改.bash_profile&#xff08;以实际安装目录为准&#xff09;&#xff1a; export PATH${PATH}:/Users/xuxiansheng/D…

Windows Phone理解和运用ItemTemplate、ContentTemplate和DataTemplate

2.2.5 ItemTemplate、ContentTemplate和DataTemplate 在理解ItemTemplate、ContentTemplate和DataTemplate的关系的之前&#xff0c;我们先来看看ContentControl类和ItemsControl类。ContentControl类是内容控件的基类&#xff0c;如Button, CheckBox&#xff0c;最明显的特征就…

杂七杂八的杂记

引子&#xff1a;这里是零零星星的没有系统总结的东西&#xff0c;或者是有待继续了解之前一些零散的备忘。 高手达人慎入&#xff0c;以免贻笑大方&#xff0c;如果误入进来&#xff0c;敬请指导一二。 1、今天发现一个Vc 中一个很好的东西&#xff1a;vector。需要#include…

C#和C++结构体Socket通信

From: http://hi.baidu.com/yangliangwang/blog/item/1a0116138ff098d6f6039ea9.html 最近在用C#做一个项目的时候&#xff0c;Socket发送消息的时候遇到了服务端需要接收C结构体的二进制数据流&#xff0c;这个时候就需要用C#仿照C的结构体做出一个结构来&#xff0c;然后将其…

用 vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)

路由跳转前做一些验证&#xff0c;比如登录验证&#xff08;未登录去登录页&#xff09;&#xff0c;是网站中的普遍需求。对此&#xff0c;vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫&#xff08;navigation-guards&#xff09;。 导航守卫&#xff08;navig…

统计代码行数

使用终端&#xff0c;cd到项目下 find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l 转载于:https://www.cnblogs.com/mo-shou…

基本原理

零序电流保护的基本原理是基于基尔霍夫电流定律&#xff1a;流入电路中任一节点的复电流的代数和等于零&#xff0c;即ΣI0&#xff0c;它是用零序C.T作为取样元件。在线路与电气设备正常的情况下&#xff0c;各相电流的矢量和等于零&#xff08;对零序电流保护假定不考虑不平衡…

GPS数据格式

本菜鸟人&#xff1a;专业导航&#xff0c;善于寻北&#xff0c;精通惯导&#xff0c;兼职GPS&#xff0c;然近日因课题之需&#xff0c;方究机器之视觉也&#xff0c;乃叹人生之无常兮&#xff01;惯导今天不讲&#xff0c;讲的话可以说上6天7夜&#xff08;貌似被拍成电影了&…