JS编程建议——37:推荐使用replace(1)

简介: 37:推荐使用replace(1)

建议37:推荐使用replace(1)
String对象的replace方法包含两个参数,第一个参数表示执行匹配的正则表达式,也可以传递字符串,第二个参数表示准备代替匹配的子字符串,例如,把字符串html替换为htm。

  1. var b = s.replace("html", "htm" );
    与search和match方法不同,replace方法不会把字符串转换为正则表达式对象,而是以字符串直接量的文本模式进行匹配。第二个参数可以是替换的文本,或者是生成替换文本的函数,把函数返回值作为替换文本来替换匹配文本。

replace方法同时执行查找和替换两个操作。该方法将在字符串中查找与正则表达式相匹配的子字符串,然后调用第二个参数值或替换函数替换这些子字符串。如果正则表达式具有全局性质,那么将替换所有的匹配子字符串,否则,只替换第一个匹配子字符串。
在replace方法中约定了一个特殊的字符“$”,如果这个美元符号附加了一个序号,就表示引用正则表达式中匹配的子表达式存储的字符串。例如:

  1. var s = "javascript";
  2. var b = s.replace( /(java)(script)/, "$2-$1");
  3. alert( b ); //"script-java"
    在上面的代码中,正则表达式/(java)(script)/中包含两对小括号,按顺序排列,其中第一对小括号表示第一个子表达式,第二对小括号表示第二个子表达式,在replace方法的参数中可以分别使用字符串"$1"和"$2"来表示对它们匹配文本的引用,当然它们不是标识符,仅是一个标记,所以不可以作为变量参与计算。除了上面约定之外,美元符号与其他特殊字符组合还可以包含更多的语义,详细说明如下:
  4. $1、$2、…、$99:与正则表达式中的第1~99个子表达式相匹配的文本。
  5. $&(美元符号+连字符):与正则表达式相匹配的子字符串。
  6. $`(美元符号+切换技能键):位于匹配子字符串左侧的文本。
  7. $'(美元符号+单引号):位于匹配子字符串右侧的文本。
  8. $$:表示$符号。
  9. var s = "javascript";
  10. var b = s.replace( /.*/, "$&$&"); //" javascriptjavascript "
    由于字符串“$&”在replace方法中被约定为正则表达式所匹配的文本,因此利用它可以重复引用匹配的文本,从而实现字符串重复显示效果。其中正则表达式“/.*/”表示完全匹配字符串。
  11. var s = "javascript";
  12. var b = s.replace( /script/, "$& != $`"); //"javascript != java"
    其中字符“$&”代表匹配子字符串“script”,字符“$`”代表匹配文本左侧文本“java”。
  13. var s = "javascript";
  14. 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方法执行匹配时,每次都会调用该函数,函数的返回值将作为替换文本执行匹配操作,同时函数可以接收以$为前缀的特殊字符组合,用来对匹配文本的相关信息进行引用。

  1. var s = 'script language = "javascript" type= " text / javascript"';
  2. var f = function($1){
  3. return $1.substring(0,1).toUpperCase() + $1.substring(1);
  4. }
  5. var a = s.replace( /(bw+b)/g, f );
  6. alert(a); //Script Language = "JavaScript" Type = " Text /JavaScript"
相关文章
|
1月前
|
前端开发 JavaScript 开发者
探索JavaScript ES6的八种常见使用技巧:开启现代编程之旅
探索JavaScript ES6的八种常见使用技巧:开启现代编程之旅
|
1月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
|
1月前
|
存储 JavaScript 编译器
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 079 JavaScript 循环语句
编程笔记 html5&css&js 079 JavaScript 循环语句
|
1月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 078 JavaScript 条件判断语句
条件判断语句是首先要接触的语句。通过条件判断来执行不同的代码块。
|
1月前
|
JavaScript 前端开发 编译器
编程笔记 html5&css&js 077 Javascript 关键字
编程笔记 html5&css&js 077 Javascript 关键字
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 076 Javascript 表达式
编程笔记 html5&css&js 076 Javascript 表达式
|
1月前
|
存储 JavaScript 前端开发
编程笔记 html5&css&js 075 Javascript 常量和变量
编程笔记 html5&css&js 075 Javascript 常量和变量
|
1月前
|
JavaScript 前端开发 程序员
编程笔记 html5&css&js 074 Javascript 运算符
编程笔记 html5&css&js 074 Javascript 运算符
|
1月前
|
JavaScript 前端开发 Java
编程笔记 html5&css&js 073 JavaScript Object数据类型
编程笔记 html5&css&js 073 JavaScript Object数据类型