详解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 相关文章推荐
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
Mar 21 Javascript
Jquery获取radio选中的值
May 05 jQuery
详解VueJs前后端分离跨域问题
May 24 Javascript
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
vue实现在v-html的html字符串中绑定事件
Oct 28 Javascript
详解Vue之计算属性
Jun 20 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 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中Session的概念
2006/10/09 PHP
PHP 字符串操作入门教程
2006/12/06 PHP
php自动跳转中英文页面
2008/07/29 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python新手实现2048小游戏
2015/03/31 Python
Python读写配置文件的方法
2015/06/03 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
python运行时间的几种方法
2016/06/17 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
机械工程师求职自我评价
2013/09/23 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
大队委员竞选稿
2015/11/20 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书