JavaScript 函数replace深入了解


Posted in Javascript onMarch 14, 2013

replace函数接受两个参数,第一个参数为字符串或正则表达式,第一个参数同样可以接受一个字符串,还可能是一个函数。

      首先对于第一个参数为字符串的我们不再需要多说"I am a boy".replace("boy","girl"),输出:"I am a girl"。在这里想说的是第一个参数为正则的情形。对于正则表达式来说首先会根据是否全局的(全局//g)决定替换行为,如果是全部的则替换全部替换,非全局的只有替换首个匹配的字符串。例如:

"Ha Ha".replace(/\b\w+\b/g, "He")  // He He "Ha Ha".replace(/\b\w+\b/, "He")  //He Ha

1:第二个参数为字符串:

    对于正则replace约定了一个特殊标记符$:

1.$i (i:1-99) : 表示从左到右正则子表达式所匹配的文本。
2.$&:表示与正则表达式匹配的全文本。
3.$`(`:切换技能键):表示匹配字符串的左边文本。
4.$'(‘:单引号):表示匹配字符串的右边文本。
5.$$:表示$转移。
下面来几个demo:

"boy & girl".replace(/(\w+)\s*&\s*(\w+)/g,"$2 & $1") //girl & boy "boy".replace(/\w+/g,"$&-$&") // boy-boy 
"javascript".replace(/script/,"$& != $`") //javascript != java 
"javascript".replace(/java/,"$&$' is ") // javascript is script

2:第二个参数为函数:

      在ECMAScript3推荐使用函数方式,实现于JavaScript1.2.当replace方法执行的时候每次都会调用该函数,返回值作为替换的新值。

     函数参数的规定:

1.第一个参数为每次匹配的全文本($&)。
2.中间参数为子表达式匹配字符串,个数不限.( $i (i:1-99))
3.倒数第二个参数为匹配文本字符串的匹配下标位置。
4.最后一个参数表示字符串本身。
这就是本文所要说replace威力强大的地方,理论的东西都是干货,我们需要示例解决一切空洞的问题:

1:字符串首字母大写:

String.prototype.capitalize = function(){     return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); 
    } ); 
}; 
console.log("i am a boy !".capitalize())

输出:I Am A Boy !

2:对字符串“张三56分, 李四74分, 王五92分, 赵六84分”的分数提取汇总,算出平均分并输出每个人的平均分差距。

var s = "张三56分, 李四74分, 王五92分, 赵六84分"; var a = s.match(/\d+/g); 
var sum = 0; 
for(var i = 0 ; i < a.length; i++){ 
            sum += parseFloat(a[i]); 
} 
   
var avg = sum / a.length; 
   
function f(){ 
            var n = parseFloat(arguments[1]); 
            return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) : 
                        ("低于平均分" + (avg - n))) + "分)"; 
} 
   
var result = s.replace(/(\d+)分/g, f); 
console.log(result);

输出:

张三56分(低于平均分20.5分), 李四74分(低于平均分2.5分), 王五92分(超出平均分15.5分), 赵六84分(超出平均分7.5分)

       JavaScript的replace函数再加上正则的高级应用,JavaScript的replace将会发回更大的威力所在,在这里将不再深入正则高级应用断言之类的。

出处:http://www.cnblogs.com/whitewolf/

Javascript 相关文章推荐
js获取某元素的class里面的css属性值代码
Jan 16 Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
深入理解Angularjs中的$resource服务
Dec 31 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
vue.js实现只弹一次弹框
Jan 29 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
Apr 10 Javascript
JS实现容器模块左右拖动效果
Jan 14 Javascript
用VsCode编辑TypeScript的实现方法
May 07 Javascript
JS异常处理的一个想法(sofish)
Mar 14 #Javascript
JQuery 中几个类选择器的简单使用介绍
Mar 14 #Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 #Javascript
document.createElement()用法
Mar 13 #Javascript
js获得鼠标的坐标值的方法
Mar 13 #Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 #Javascript
九种js弹出对话框的方法总结
Mar 12 #Javascript
You might like
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
浅析js中的浮点型运算问题
2014/01/06 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
2016/06/24 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
微信小程序实现animation动画
2018/01/26 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
python中几种自动微分库解析
2019/08/29 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
什么时候用assert
2015/05/08 面试题
营业经理岗位职责
2013/11/10 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
审美与表现自我评价
2015/03/09 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
go goroutine 怎样进行错误处理
2021/07/16 Golang
Golang连接并操作MySQL
2022/04/14 MySQL