详解JavaScript 中的 replace 方法


Posted in Javascript onJanuary 01, 2016

定义和用法

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

stringObject.replace(regexp/substr,replacement)

参数 描述
regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值

一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

正则字符

replaceValue可以是字符串。如果字符串中有几个特定字符的话,会被转换为特定字符串。

字符 替换文本
$$ 直接量符号(就是当做'$$'字符用)
$& 与正则相匹配的字符串
$` 匹配字符串左边的字符
$' 匹配字符串右边的字符
$1,$2,$,3,…,$n 匹配结果中对应的分组匹配结果

下面通过实例给大家介绍:

例子 1

在本例中,我们将使用 "W3School" 替换字符串中的 "Microsoft":

<script type="text/javascript">
var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/, "W3School"))
</script>

输出:

Visit W3School!

例子 2

在本例中,我们将执行一次全局替换,每当 "Microsoft" 被找到,它就被替换为 "W3School":

<script type="text/javascript">
var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."
document.write(str.replace(/Microsoft/g, "W3School"))
</script>

输出:

Welcome to W3School! We are proud to announce that W3School
has one of the largest Web Developers sites in the world.

例子 3

您可以使用本例提供的代码来确保匹配字符串大写字符的正确:

text = "javascript Tutorial";
text.replace(/javascript/i, "JavaScript");

例子 4

在本例中,我们将把 "Doe, John" 转换为 "John Doe" 的形式:

name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

例子 5

在本例中,我们将把所有的花引号替换为直引号:

name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");

例子 6

在本例中,我们将把字符串中所有单词的首字母都转换为大写:

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
 return word.substring(0,1).toUpperCase()+word.substring(1);}
 );

正则替换字符串

'I am loser,You are loser'.replace(/loser/g,'hero')
//I am hero,You are hero

使用正则表达式,并将正则的global属性改为true则可以让所有loser都变为hero

使用$&字符给匹配字符加大括号

var sStr='讨论一下正则表达式中的replace的用法';
sStr.replace(/正则表达式/,'{$&}');
//讨论一下{正则表达式}中的replace的用法
使用$`和$'字符替换内容
'abc'.replace(/b/,"$`");
//aac
'abc'.replace(/b/,"$'");
//acc
使用分组匹配组合新的字符串
'nimojs@126.com'.replace(/(.+)(@)(.*)/,"$2$1")
//@nimojs

replaceValue参数可以是一个函数

StringObject.replace(searchValue,replaceValue)中的replaceValue可以是一个函数.

如果replaceValue是一个函数的话那么,这个函数的arguments会有n+3个参数(n为正则匹配到的次数)

先看例子帮助理解:

function logArguments(){  
  console.log(arguments);
//["nimojs@126.com", "nimojs", "@", "126.com", 0, "nimojs@126.com"] 
  return '返回值会替换掉匹配到的目标'
}
console.log(
  'nimojs@126.com'.replace(/(.+)(@)(.*)/,logArguments)
)

参数分别为

匹配到的字符串(此例为nimojs@126.com,推荐修改上面代码的正则来查看匹配到的字符帮助理解)
如果正则使用了分组匹配就为多个否则无此参数。(此例的参数就分别为”nimojs”, “@”, “126.com”。推荐修改正则为/nimo/查看控制台中返回的arguments值)
匹配字符串的对应索引位置(此例为0)
原始字符串(此例为nimojs@126.com)
使用自定义函数将A-G字符串改为小写

'JAVASCRIPT'.replace(/[A-G]/g,function(){
  return arguments[0].toLowerCase();
})
//JaVaScRIPT

使用自定义函数做回调式替换将行内样式中的单引号删除

<span style="font-family:\'微软雅黑\';">demo</span>'.replace(/\'[^']+\'/g,function(){   
  var sResult=arguments[0];
  console.log(sResult);//'微软雅黑'
  sResult=sResult.replace(/\'/g,'');
  console.log(sResult);
//微软雅黑
  return sResult;
})
//<span style="font-family:微软雅黑;">demo</span>

以上内容是小编给大家介绍的avaScript 中的 replace 方法,希望大家喜欢。

Javascript 相关文章推荐
你必须知道的JavaScript 变量命名规则详解
May 07 Javascript
jquery动态添加删除div 具体实现
Jul 20 Javascript
js数组的基本操作(很全自己整理的)
Oct 16 Javascript
jQuery中复合属性选择器用法实例
Dec 31 Javascript
javascript使用appendChild追加节点实例
Jan 12 Javascript
jquery读取xml文件实现省市县三级联动的方法
May 29 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
node.js如何操作MySQL数据库
Oct 29 Javascript
基于JavaScript实现定时跳转到指定页面
Jan 01 #Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 #Javascript
实例详解JavaScript获取链接参数的方法
Jan 01 #Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 #Javascript
常见的javascript跨域通信方法
Dec 31 #Javascript
javascript实现input file上传图片预览效果
Dec 31 #Javascript
分享几种比较简单实用的JavaScript tabel切换
Dec 31 #Javascript
You might like
php后门URL的防范
2013/11/12 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
sklearn+python:线性回归案例
2020/02/24 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
简历的个人自我评价范文
2014/01/03 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
一文搞懂python异常处理、模块与包
2021/06/26 Python
mysql中关键词exists的用法实例详解
2022/06/10 MySQL