JS编程建议——37:推荐使用replace(1)
建议37:推荐使用replace(1)
String对象的replace方法包含两个参数,第一个参数表示执行匹配的正则表达式,也可以传递字符串,第二个参数表示准备代替匹配的子字符串,例如,把字符串html替换为htm。
- var b = s.replace("html", "htm" );
与search和match方法不同,replace方法不会把字符串转换为正则表达式对象,而是以字符串直接量的文本模式进行匹配。第二个参数可以是替换的文本,或者是生成替换文本的函数,把函数返回值作为替换文本来替换匹配文本。
replace方法同时执行查找和替换两个操作。该方法将在字符串中查找与正则表达式相匹配的子字符串,然后调用第二个参数值或替换函数替换这些子字符串。如果正则表达式具有全局性质,那么将替换所有的匹配子字符串,否则,只替换第一个匹配子字符串。
在replace方法中约定了一个特殊的字符“$”,如果这个美元符号附加了一个序号,就表示引用正则表达式中匹配的子表达式存储的字符串。例如:
- var s = "javascript";
- var b = s.replace( /(java)(script)/, "$2-$1");
- alert( b ); //"script-java"
在上面的代码中,正则表达式/(java)(script)/中包含两对小括号,按顺序排列,其中第一对小括号表示第一个子表达式,第二对小括号表示第二个子表达式,在replace方法的参数中可以分别使用字符串"$1"和"$2"来表示对它们匹配文本的引用,当然它们不是标识符,仅是一个标记,所以不可以作为变量参与计算。除了上面约定之外,美元符号与其他特殊字符组合还可以包含更多的语义,详细说明如下: - $1、$2、…、$99:与正则表达式中的第1~99个子表达式相匹配的文本。
- $&(美元符号+连字符):与正则表达式相匹配的子字符串。
- $`(美元符号+切换技能键):位于匹配子字符串左侧的文本。
- $'(美元符号+单引号):位于匹配子字符串右侧的文本。
- $$:表示$符号。
- var s = "javascript";
- var b = s.replace( /.*/, "$&$&"); //" javascriptjavascript "
由于字符串“$&”在replace方法中被约定为正则表达式所匹配的文本,因此利用它可以重复引用匹配的文本,从而实现字符串重复显示效果。其中正则表达式“/.*/”表示完全匹配字符串。 - var s = "javascript";
- var b = s.replace( /script/, "$& != $`"); //"javascript != java"
其中字符“$&”代表匹配子字符串“script”,字符“$`”代表匹配文本左侧文本“java”。 - var s = "javascript";
- var b = s.replace( /java/, "$&$' is "); //"javascript is script"
其中字符“$&”代表匹配子字符串“java”,字符“$'”代表匹配文本右侧文本“script”。然后用“$&$' is”所代表的字符串“javascript is”替换原字符串中的“java”子字符串,即组成一个新的字符串“javascript is script”。
在ECMAScript v3中明确规定,replace方法的第二个参数建议使用函数,而不是字符串(当然不是禁止使用),JavaScript 1.2实现了对这个特性的支持。这样,当replace方法执行匹配时,每次都会调用该函数,函数的返回值将作为替换文本执行匹配操作,同时函数可以接收以$为前缀的特殊字符组合,用来对匹配文本的相关信息进行引用。
- var s = 'script language = "javascript" type= " text / javascript"';
- var f = function($1){
- return $1.substring(0,1).toUpperCase() + $1.substring(1);
- }
- var a = s.replace( /(bw+b)/g, f );
- alert(a); //Script Language = "JavaScript" Type = " Text /JavaScript"
JS编程建议——37:推荐使用replace(1)相关推荐
- JS编程建议——8:谨慎使用运算符(3)
建议8:谨慎使用运算符(3) 要确保变量a的值为连续运算,可以使用小括号逻辑分隔符强迫4个数值先进行连续运算,然后再赋值. a = (1, 2, 3, 4); alert(a); //4 当使用var ...
- JS编程建议——7:小心保留字的误用
建议7:小心保留字的误用 JavaScript语言中定义了很多备用或已经使用的保留字,按首字母顺序列出的保留字. 这些单词中的大多数并没有在语言中使用,但是根据JavaScript语法规则,这些单词是 ...
- JS编程建议——42:用好正则表达式静态值
建议42:用好正则表达式静态值 正则表达式的静态属性比较特殊,有两个名字:长名(全称)和短名(简称,以美元符号开头表示),详细说明见表2.1. 表2.1 RegExp的静态属性 长名 短名 说明 in ...
- JS编程建议——2:正确辨析JavaScript句法中的词、句和段
建议2:正确辨析JavaScript句法中的词.句和段 JavaScript语法包含了合法的JavaScript代码的所有规则和特征,它主要分为词法和句法.词法包括字符编码.名词规则.特殊词规则等.词 ...
- JS编程建议——52:建议使用splice删除数组
建议52:建议使用splice删除数组 删除数组元素的方法有多种,最简单的方法是利用length属性来截断数组,但这种方法比较笨拙,仅能够截断尾部元素.在JavaScript中,由于数组其实就是对象, ...
- JS编程建议——32:使用制表
建议32:使用制表 代码所做的事情越少,它的运行速度就越快,因此,避免重复工作很有意义.多次执行相同的任务也在浪费时间.制表法通过缓存先前计算结果为后续计算所使用,避免了重复工作,这使得制表成为递归算 ...
- java字符串元素置于最前_java_java编程常用技术(推荐),一:将String字符串放在最前面 - phpStudy...
java编程常用技术(推荐) 一:将String字符串放在最前面 防止发生NullPointerException异常,我们通常把String字符串放在equals方法的左边来比较,这样可以有效的避免 ...
- python编程有用吗-分享8点超级有用的Python编程建议
原标题:分享8点超级有用的Python编程建议 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑总结出来的,现在在这里分 ...
- PHP 安全编程建议
PHP 安全编程建议 简介 要提供互联网服务,当你在开发代码的时候必须时刻保持安全意识.可能大部分 PHP 脚本都对安全问题都不在意,这很大程度上是因为有大量的无经验程序员在使用这门语言.但是,没有理 ...
最新文章
- SSAN 关系抽取 论文笔记
- 终于把时间序列分析的关键点全讲清楚了!
- python那么慢为什么还有人用-为什么Python运算慢还拿来搞AI?这三点大多数都不知道?...
- 【杂谈】追着光、靠近光、成为光、散发光
- 梅赛德斯奔驰即将为Apple Watch推出应用
- Windows上使用bat实现备份一个月内的数据库数据到文件
- linux 常用命令技巧
- python中的列表,添加元素,获取元素,删除元素,列表分片,常用操作符
- python变量域名_想尝试使用python进行域名分析,可是没有接触过python,想请教请教。...
- Python学习之布尔和数字
- 2010.06.04 电影推荐
- html5 中的 wbe storage
- Oracle 系列 统计信息详解(Statistic)
- 记录解决Win10底部任务栏转圈圈问题的过程(Windows假死)
- 企业IT机房中使用什么灭火器?
- OSChina 周二乱弹 —— 好朋友都脱单了 而我就比较厉害了
- 美国东北大学计算机科学,美国东北大学计算机专业排名
- 现代化物流对应术语解释
- Bayes,HMM,MRF Gibbs Distribution在图像降噪中的应用
- QT5.12.0警告 zero as null pointer constant
热门文章
- open***无法启动日志报错解决方法
- android studio 的自动更新问题
- [原] Unity调用android版新浪微博
- Mysql5.5配置主从复制
- jQuery的ajax使用场景讨论(c#)
- 基于Struct的云和租房系统(简单房屋出租)
- selenium--字符串/整型问题Can't convert 'int' object to str implicitly提示解决方法
- HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
- 微软和 SAP 扩展了云环境中的合作关系
- 50 种系统免遭黑客侵袭的方法 [2017 年版]