JavaScript中replace()方法的第二个参数解析

语法

string.replace(searchvalue,newvalue)

参数值

searchvalue

必须。规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

newvalue

必需。一个字符串值。规定了替换文本或生成替换文本的函数。

返回值

String

一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

第一个参数searchvalue

这个参数比较好理解,要么是字符串要么是正则表达式。上文说的“请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。”,意思是‘/abc/gi‘不会被解析为正则对象,即使它跟正则写法一样。

本文不说第一个参数,只说第二个参数。

第二个参数newvalue

这个参数要么是普通字符串,要么是正则替换表达式字符串,说来说去都是字符串,要么是一个函数。

正则替换表达式

特殊替换字符:

字符 替换文本

$& 与正则相匹配的字符串

$` 匹配字符串左边的字符

$’ 匹配字符串右边的字符

$1,$2,$,3,…,$n 匹配结果中对应的分组匹配结果

$&

$& 适用于没有子表达式的情况

var sStr=‘讨论一下正则表达式中的replace的用法‘;
sStr.replace(/正则表达式/,‘《$&》‘);
// 得到:"讨论一下《正则表达式》中的replace的用法"

$`

匹配字符串左边的所有字符

var sStr=‘讨论一下正则表达式中的replace的用法‘;
sStr.replace(/正则表达式/,‘《$`》‘);
// 得到:"讨论一下《讨论一下》中的replace的用法"

$‘

匹配字符串右边的所有字符,注意,既然 $‘ 有单引号,那么外面的引号必须双引号,如果不可以双引号,只能把 $‘ 的单引号转义。

var sStr=‘讨论一下正则表达式中的replace的用法‘;
sStr.replace(/正则表达式/,"《$‘》");
// 得到:"讨论一下《中的replace的用法》中的replace的用法"

$1, $2, $3, …, $n

依次匹配子表达式

var sStr=‘讨论一下正则表达式中的replace的用法‘;
sStr.replace(/(正则)(.+?)(式)/,"《$1》$2<$3>");
// 得到:"讨论一下《正则》表达<式>中的replace的用法"

函数

先看arguments的用法:

var sStr=‘讨论一下正则表达式中的replace的用法‘;
sStr.replace(/(正则).+?(式)/,function() {
    console.log(arguments);
});
// ["正则表达式", "正则", "式", 4, "讨论一下正则表达式中的replace的用法"]

参数分别为:

  • 匹配到的字符串(此例为"正则表达式")
  • 如果正则使用了分组匹配就为多个否则无此参数。(此例的参数就分别为 "正则", "式")
  • 匹配字符串的对应索引位置(也就是"正则表达式"的索引位置,此例为4)
  • 原始字符串

如果加上全局标识符g,则是:

var sStr=‘讨论一下正则表达式中的replace的正则表达式用法‘;
sStr.replace(/(正则).+?(式)/g,function() {
    console.log(arguments);
});
// ["正则表达式", "正则", "式", 4, "讨论一下正则表达式中的replace的正则表达式用法"]
// ["正则表达式", "正则", "式", 19, "讨论一下正则表达式中的replace的正则表达式用法"]

也就是说,arguments是当前函数的内置属性,指代当前匹配的参数伪数组。arguments[0]就是当前匹配的字符串。

var sStr=‘讨论一下正则表达式中的replace的正则表达式用法‘;
sStr.replace(/(正则).+?(式)/g,function() {
    console.log(arguments[0]);
    return arguments[0] + ‘a‘;
});
// 正则表达式
// 正则表达式
// "讨论一下正则表达式a中的replace的正则表达式a用法"

函数做参数的优势,在于可以对arguments做更复杂的操作,而不像只是一个字符串参数那么简陋。当然,arguments不是必须用,可以不用。

原文链接:https://www.jianshu.com/p/31bebd90fd1d

原文地址:https://www.cnblogs.com/lvmylife/p/9079297.html

时间: 2024-11-09 08:09:40

JavaScript中replace()方法的第二个参数解析的相关文章

详解 JavaScript 中 splice() 方法

splice() 方法是一个比较少用的方法,但是功能确实很好,并且在我们 coding 的时候,经常有需要 splice() 方法,先介绍一下该方法. 在 JavaScript 中 splice() 方法,是一个很强的数组方法,它有多种用法. splice() 方法主要用来向数组中添加新的值. 1.删除(需要2个参数,第一个参数为"起始位",第二个参数表示删除多少个) 1 //创建数组 2 var array = []; 3 //添加值 4 array.push(1); 5 array

仿javascript中confirm()方法的小插件

10天没有写博客了,不知道为什么,心里感觉挺不舒服的,可能这是自己给自己规定要去完成的事情,没有按照计划执行,总会心里不怎么舒服.最近事情挺多的,终于今天抽空来更新一下博客了. 今天写的是一个小插件.平时我们习惯于使用javascript中自带的confirm()函数做出一个弹窗的效果,但是问题在于这样的弹窗非常不美观,大大降低了网页的整体效果. 好吧废话不多说,首先先来了解一下confirm()函数,下面应该注释得很清楚了. if(confirm("我们去阿里转山吧,好吗?")){/

javascript中splice()方法的用法

在javascript中splice()方法,是一个很强的数组方法,它有多种用法. splice()主要用途是向数组的中部插入项. 有如下3种方式: 删除--可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除项的项数. 例如,splice(0,2)会删除数组中的前两项. 插入--可以向指定位置插入任意数量的项,只需要提供3个参数:骑士位置.0(要删除的项数)和要插入的项. 如果要插入多个项,可以再传入第四.第五,一直任意多个项. 例如,splice(2,1,"red"

Javascript中的方法和匿名方法

Javascript方法(函数) 声明函数 以function开头,后跟函数名,与C#.java不同,Javascript不需要声明返回值类型.参数类型.没有返回值就是undefined. 举个栗子更清楚:  无参数无返回值的方法: function f1(){ alert('这是一个方法'); } f1();//调用方法 无参数有返回值的方法: function f2(){ return 100; } var result=f2();//声明一个变量,接收f1()中的返回值 alert(res

javaScript中eval()方法转换json对象

原文:javaScript中eval()方法转换json对象 <script language="javascript"> var user = '{name:"张三",age:23,'+ 'address:{city:"青岛",zip:"266071"},'+ 'email:"[email protected]",'+ 'showInfo:function(){'+ 'document.wri

jQuery()方法的第二个参数

关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 context.find(selector) 2.jQuery(html, [ownerDocument]) 文档对ownerDocument的解释是:“创建DOM元素所在的文档” 也就是说,如果你要编写挎document的脚本,比如iframe或者用window.open开一个新窗口,可能会用得着它 3

getAttribute()方法的第二个参数

对于一个img元素,我们想获取它的src属性时可以有两种方式: 1.xxx.getAttribute("src") 2.直接通过xxx.src获取属性值 在src的属性值为相对路径时,这两者的结果在不同浏览器会有一些不同哦. 以此为例: var img=document.getElementById('logo'); alert("src:"+img.src); // iE7-: src:http://localhost/test/images/logo.png /

JavaScript之Ajax-4 XML解析(JavaScript中的XML、Ajax返回并解析XML)

一.JavaScript中的XML XML DOM对象 - IE 浏览器通过 ActiveXObject 对象得到 XML DOM 对象 - 其他浏览器通过 DOMParser 对象得到 XML DOM 对象 XML DOM对象的支持 - XML DOM(XML Document Object Model)定义了访问和操作XML文档的标准方法 - DOM 把 XML 文档作为树结构来查看.能够通过DOM树来访问所有元素 加载并解析XML字符串 二.Ajax返回并解析XML 使用XHR发送XML字

Javascript中replace()的一些用法总结

关于定义 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 关于语法 stringObject.replace(regexp/substr,replacement) 关于参数 参数 描述 regexp/substr 必需.规定子字符串或要替换的模式的 RegExp 对象. 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象. replacement 必需.一个字符串值.规定了替换文本或生成替换文