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 相关文章推荐
javascript生成/解析dom的CDATA类型的字段的代码
Apr 22 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
Dec 12 Javascript
js 数组去重的四种实用方法
Sep 09 Javascript
jquery调取json数据实现省市级联的方法
Jan 29 Javascript
Javascript中使用parseInt函数需要注意的问题
Apr 02 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
JS上传组件FileUpload自定义模板的使用方法
May 10 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 Javascript
javascript的this关键字详解
May 20 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
Vue组件简易模拟实现购物车
Dec 21 Vue.js
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
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
php报错502badgateway解决方法
2019/10/11 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
js实现3D旋转效果
2020/08/18 Javascript
python框架django基础指南
2016/09/08 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
详解django中自定义标签和过滤器
2017/07/03 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
Python logging模块handlers用法详解
2020/08/14 Python
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
优秀班组长事迹
2014/05/31 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
撤诉书怎么写
2015/05/19 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
环保守法证明
2015/06/24 职场文书
pandas中关于apply+lambda的应用
2022/02/28 Python
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android