ECMAScript提供了replace()方法。这个方法接收两个参数,第一个参数可以是一个RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数。现在我们来详细讲解可能出现的几种情况。

1. 两个参数都为字符串的情况
var text = 'cat, bat, sat, fat';
// 在字符串中找到at,并将at替换为ond,只替换一次
var result = text.replace('at', 'ond');
// "cond, bat, sat, fat"
console.log(result);
2. 第一个参数为RegExp对象,第二个参数为字符串
我们可以发现上面这种情况只替换了第一个at,如果想要替换全部at,就必须使用RegExp对象。
var text = 'cat, bat, sat, fat'; // 使用/at/g 在全局中匹配at,并用ond进行替换 var result = text.replace(/at/g, 'ond'); // cond, bond, sond, fond console.log(result);
3. 考虑RegExp对象中捕获组的情况
RegExp具有9个用于存储捕获组的属性。$1, $2...$9,分别用于存储第一到九个匹配的捕获组。我们可以访问这些属性,来获取存储的值。
var text = 'cat, bat, sat, fat'; // 使用/(.at)/g 括号为捕获组,此时只有一个,因此所匹配的值存放在$1中 var result = text.replace(/(.at)/g, '$($1)'); // $(cat), $(bat), $(sat), $(fat) console.log(result);
4. 第二个参数为函数的情况,RegExp对象中不存在捕获组的情况
var text = 'cat, bat, sat, fat';
// 使用/at/g 匹配字符串中所有的at,并将其替换为ond,
// 函数的参数分别为:当前匹配的字符,当前匹配字符的位置,原始字符串
var result = text.replace(/at/g, function(match, pos, originalText) {
console.log(match + ' ' + pos);
return 'ond'
});
console.log(result);
// 输出
/*
at 1 dd.html:12:9
at 6 dd.html:12:9
at 11 dd.html:12:9
at 16 dd.html:12:9
cond, bond, sond, fond dd.html:16:5
*/
5. 第二个参数为函数的情况,RegExp对象中存在捕获组的情况
var text = 'cat, bat, sat, fat';
// 使用/(.at)/g 匹配字符串中所有的at,并将其替换为ond,
// 当正则表达式中存在捕获组时,函数的参数一次为:模式匹配项,第一个捕获组的匹配项,
// 第二个捕获组的匹配项...匹配项在字符串中的位置,原始字符串
var result = text.replace(/.(at)/g, function() {
console.log(arguments[0] + ' ' + arguments[1] + ' ' + arguments[2]);
return 'ond'
});
console.log(result);
// 输出
/*
cat at 1
bat at 6
sat at 11
fat at 16
cond, bond, sond, fond
*/
以上为replace方法的所有可以使用的情况,下面我们使用replace和正则表达式共同实现字符串trim方法。
(function(myFrame) {
myFrame.trim = function(str) {
// ' hello world '
return str.replace(/(^\s*)|(\s*$)/g, '');
};
window.myFrame = myFrame;
})(window.myFrame || {});
// 测试
var str = ' hello world '
console.log(str.length); // 15
console.log(myFrame.trim(str).length); // 11
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# replace
# js正则函数match、exec、test、search、replace、split使用介绍集合
# JS利用正则配合replace替换指定字符
# js中字符替换函数String.replace()使用技巧
# js 页面刷新location.reload和location.replace的区别小结
# js replace 与replaceall实例用法详解
# js使用正则实现ReplaceAll全部替换的方法
# javascript中使用replaceAll()函数实现字符替换的方法
# javascript replace()用法详解附实例代码
# js replace() 文本替换你所不知的
# 详解JS正则replace的使用方法
# 第二个
# 第一个
# 是一个
# 我们可以
# 象中
# 放在
# 并将其
# 并将
# 这种情况
# 几种
# 正则表达式
# 只有一个
# 可以使用
# 分别为
# 一到
# 都为
# 可能出现
# 中不
# 大家多多
# 上为
相关文章:
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站为何优先选择香港服务器?
开封网站制作公司,网络用语开封是什么意思?
如何自定义建站之星网站的导航菜单样式?
已有域名如何免费搭建网站?
建站之星安装提示数据库无法连接如何解决?
公司门户网站制作流程,华为官网怎么做?
b2c电商网站制作流程,b2c水平综合的电商平台?
小建面朝正北,A点实际方位是否存在偏差?
如何在阿里云ECS服务器部署织梦CMS网站?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何快速登录WAP自助建站平台?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
北京制作网站的公司,北京铁路集团官方网站?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
网站图片在线制作软件,怎么在图片上做链接?
网站app免费制作软件,能免费看各大网站视频的手机app?
如何选择高效可靠的多用户建站源码资源?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
微信推文制作网站有哪些,怎么做微信推文,急?
如何快速启动建站代理加盟业务?
建站之星后台密码如何安全设置与找回?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何快速搭建自助建站会员专属系统?
php json中文编码为null的解决办法
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
建站之星北京办公室:智能建站系统与小程序生成方案解析
网站制作免费,什么网站能看正片电影?
制作宣传网站的软件,小红书可以宣传网站吗?
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速选择适合个人网站的云服务器配置?
安徽网站建设与外贸建站服务专业定制方案
如何在建站之星网店版论坛获取技术支持?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何通过虚拟机搭建网站?详细步骤解析
c# await 一个已经完成的Task会发生什么
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何制作算命网站,怎么注册算命网站?
定制建站是什么?如何实现个性化需求?
建站主机与服务器功能差异如何区分?
家庭建站与云服务器建站,如何选择更优?
如何通过NAT技术实现内网高效建站?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
建站之星logo尺寸如何设置最合适?
*请认真填写需求信息,我们会在24小时内与您取得联系。