repalce

article/2025/10/31 23:17:20

在这里插入图片描述

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://chatgpt.dhexx.cn/article/Sfv0uC88.shtml

相关文章

Android studio 4.2新特性及升级异常

Android studio 版本及特性系列目录 Android 12 终于来了&#xff0c;你准备好了吗&#xff1f;Android studio 4.2新特性Android studio 4.1新特性Android Studio 4.0新特性及升级异常Android Studio3.6. 插件搜索不到终极解决方案 Android studio 4.2新特性 前言升级异常Gra…

强化学习的学习之路(五十一)2021-02-20 Retrace

作为一个新手&#xff0c;写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程&#xff0c;希望对大家能有所帮助。这个系列后面会不断更新&#xff0c;希望自己在2021年能保证平均每日一更的更新速度&#xff0c;主要是介绍强化学习的基础知识&#xff…

RecId

我记得好像AX最初版本RecId是所有表都唯一的。但是这样有一个坏处就是限制了数据库可存储的数据的条数。D365FO中RecId 不再全局唯一&#xff0c;但是表唯一。 每个表都有一个Sequences生成表的RecId,格式是&#xff1a;SEQ_TableId 右键Sequences可以看下当前RecId的值&#…

ResNet过程

#ResNet 因为网络传播的层次太深&#xff0c;后面的很难传播到前面&#xff0c;所以增加了一个短接层&#xff0c;深层次网络可以退化成一个浅层次网络 #filter_num 卷积核数量 #stride 步长 class BasicBlock(layers.Layer):def __init__(self,filter_num,stride1):super(Bas…

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志 &#xff08;1&#xff09;如果Android Studio里面没有安装下列插件之一的&#xff0c;在Settings的Plugins里面安装其中一个&#xff1a; &#xff08;2&#xff09;菜单栏中的code里面找到反混…

android还原代码混淆proguard日志的工具--retrace和SmartRetrace

介绍 代码混淆时android反编译的常用方法&#xff0c;android SDK提供了Proguard工具&#xff0c;路径是 ANDROID_SDK_HOME/tools/proguard 命令行在ANDROID_SDK_HOME/tools/proguard/bin下&#xff0c;而实际的执行代码路径为ANDROID_SDK_HOME/tools/proguard/lib apk经过混…

with recursive用法

with recursive 则是一个递归的查询子句&#xff0c;他会把查询出来的结果再次代入到查询子句中继续查询。 with recursive d(n, fact) as ( values (1,2) union all #合并 select n1, (n1)*fact from d where n < 5) SELECT * from d;递归过程如下&#xff1a; n1 fact2 n…

python实验之绘制南丁格尔玫瑰图

一、实验目的 了解玫瑰图的前世今生&#xff1b;了解 matplotlib 标准库中的 pyplot 模块&#xff1b;了解在极坐标 系中绘制柱状图。 二、实验基本原理及步骤&#xff08;或方案设计及理论计算&#xff09; 实验步骤&#xff1a; 查阅文档&#xff0c;了解南丁格尔玫瑰图的原…

南丁格尔玫瑰图 | 集才华和美貌于一身的数据图表

南丁格尔玫瑰图将柱图转化为更美观的饼图形式&#xff0c;是极坐标化的柱图&#xff0c;其夸大了数据之间差异的视觉效果&#xff0c;适合展示数据原本差异小的数据。 1、玫瑰图的前世今生 长得像饼图又不是饼图&#xff0c;这种有着极坐标的统计图有着一个美丽的名字—南丁格…

雷达图+南丁格尔玫瑰图

具体实现的效果图&#xff1a; 使用的图表插件是echarts,具体的完整代码如下&#xff1a; import * as echarts from echarts;var chartDom document.getElementById(main); var myChart echarts.init(chartDom); var option;var arr [{ name: 1楼, value: 30 },{ name: 2楼…

Echarts南丁格尔玫瑰图、锥形柱状图、渐变曲线图

目录 1、南丁格尔玫瑰图 2、锥形柱状图 3、渐变曲线图 4、曲线图 1、南丁格尔玫瑰图 option {title: {text: 作物占比,left: 50, // 组件离容器左侧的距离top: 20},legend: {top: 52%,x: center,y: top,width: 180,height: 60,itemGap: 30,itemWidth: 15,itemHeight: 1…

Python数据可视化之南丁格尔玫瑰图(亲测)

文章目录 1. 什么是南丁格尔玫瑰图2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图。 南丁格尔玫瑰图&#xff08;Nightingale rose diagram&#xff09;又名鸡冠花图、极坐标区域图。统计学家和医学改革家佛罗伦斯‧…

【R语言 南丁格尔玫瑰图绘制】

继续上一篇地理信息可视化讲起&#xff0c;为了能够更加直观的展示数据分布情况&#xff0c;发现之前人民日报客户端曾经做过一张关于疫情分布的玫瑰图&#xff0c;非常惊艳&#xff0c;故尝试用当前爬取的数据进行绘制。 绘图前数据整理 现存数据中不少地区病例已经清零&…

南丁格尔玫瑰图解析

一&#xff1a;先安装软件&#xff0c;任意一个都可以 PyCharm安装教程 https://www.cnblogs.com/du-hong/p/10244304.html Anaconda安装教程 https://blog.csdn.net/ITLearnHall/article/details/81708148 二&#xff1a;相关软件以及Python库的知识讲解&#xff1a; Py…

Echarts南丁格尔图.

项目场景&#xff1a; 通过Echarts修改南丁格尔图js文件&#xff0c;修改轮盘颜色。使项目更加美观 文本标签自定义 问题描述 不知道为什么自定义函数使饼图图形上的文本标签label标签显示在内部且&#xff0c;获得对应标签的数据。使用自定义函数formatter的参数是ar&#…

Python+Matplotlib绘制饼状图模拟南丁格尔玫瑰图

开学第一课&#xff1a;一定不要这样问老师Python问题 董付国老师Python系列教材推荐与选用参考 版权声明&#xff1a;由于公众号后台规则问题&#xff0c;本文暂时无法设置原创标记&#xff0c;但仍属原创内容&#xff0c;微信公众号“Python小屋”坚持只发原创技术文章。 推…

使用Matplotlib绘制南丁格尔玫瑰图

前言 在前文中&#xff0c;我们介绍了使用pyecharts绘制南丁格尔玫瑰图&#xff0c;本章我们再学习一下使用matplotlib绘制南丁格尔玫瑰图&#xff0c;了解在极坐标系中绘制柱状图。并对比一下两种不同的绘制方法&#xff0c;如何实现&#xff1f; 介绍 玫瑰图是弗罗伦斯南丁…

从南丁格尔图到医学发展史

可视化中&#xff0c;前端用于表现不同类目的数据在总和中的占比的场景&#xff0c;往往会采用饼图。 针对数据大小相近&#xff0c;南丁格尔图的呈现会更加美观。 南丁格尔图&#xff0c;又称玫瑰图&#xff0c;是由弗罗伦斯南丁格尔发明。 弗洛伦斯南丁格尔 开创了护理事业…

echarts绘制嵌套环形图(南丁格尔玫瑰图)

根据专业总人数和学院总人数绘制嵌套环形图 首先&#xff0c;echarts的基本步骤 引入js&#xff0c;准备容器&#xff0c;初始化实例&#xff0c; <script src"lib/echarts.min.js"></script><style>.box{width: 900px;height: 500px;background…

Python数据可视化之南丁格尔玫瑰图

文章目录 1. 什么是南丁格尔玫瑰图2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图。 南丁格尔玫瑰图&#xff08;Nightingale rose diagram&#xff09;又名鸡冠花图、极坐标区域图。统计学家和医学改革家佛罗伦斯‧…