如何正确使用js replace函数呢?

例如,str = str.replace(",", "\\");

只替换第一个遇到的“,”。

一,javascript replace() 方法

定义和用法

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

语法stringobject.replace(regexp/substr,replacement)regexp/substr

必需。规定子字符串或要替换的模式的 regexp 对象。

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

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

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

说明

字符串 stringobject 的 replace() 方法执行的是查找并替换的操作。它将在 stringobject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。(ps:这里是要注意的)

replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

$1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。$&与 regexp 相匹配的子串。$`位于匹配子串左侧的文本。$'位于匹配子串右侧的文本。$$直接量符号。

注意:ecmascript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringobject 中出现的位置。最后一个参数是 stringobject 本身。

下面介绍几个js replace函数的例子,以巩固对js replace函数的理解。(jquery中文网 www.jquerycn.cn)

例子 1

将使用 "w3school" 替换字符串中的 "microsoft":

复制代码 代码示例:

输出:

visit w3school!

例子 2

将执行一次全局替换,每当 "microsoft" 被找到,它就被替换为 "w3school":

复制代码 代码示例:

var str="welcome to microsoft! "

str=str + "we are proud to announce that microsoft has "

str=str + "one of the largest web developers sites in the world."

document.write(str.replace(/microsoft/g, "w3school"))

输出:

welcome to w3school! we are proud to announce that w3schoolhas one of the largest web developers sites in the world.

例子 3

您可以使用本例提供的代码来确保匹配字符串大写字符的正确:

复制代码 代码示例:

text = "javascript tutorial";

text.replace(/javascript/i, "javascript");

例子 4

将把 "doe, john" 转换为 "john doe" 的形式:

复制代码 代码示例:

name = "doe, john";

name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

例子 5

将把所有的花引号替换为直引号:

复制代码 代码示例:

name = '"a", "b"';

name.replace(/"([^"]*)"/g, "'$1'");

例子 6

将把字符串中所有单词的首字母都转换为大写:

复制代码 代码示例:

name = 'aaa bbb ccc';

uw=name.replace(/\b\w+\b/g, function(word){ return word.substring(0,1).touppercase()+word.substring(1);} );

自己的运用:

文中有提到replace像c#那样使用的话,只替换第一个匹配的字符,只有标志全局标志g,才会替换全部的。

文中我对这段话进行了标识。

开始对于 全局标志 g ,开始还不是很清楚,后来发现 text.replace(/javascript/g, "javascript");

前一个参数   /要转换的字/g   第二个参数是要替换为的字符串。

对于替换反斜杠“\” 的话,就是用这种方式   text = text.replace(/\\/g, "\\\\");

二,js replace方法使用介绍

replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。

该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。

接下来的参数是一个整数,声明了匹配在 stringobject 中出现的位置。最后一个参数是 stringobject 本身。

以下演示了几种javascript正则表示式的repalce方式。

复制代码 代码示例:

//获取url的两个参数,并返回urlrewrite之前的真实url

var reg=new regexp("(http://www.jquerycn.cn/bookreader/)(\\d+),(\\d+).aspx","gmi");

var url="http://www.jquerycn.cn/bookreader/1017141,20361055.aspx";

//方式一,最简单常用的方式

var rep=url.replace(reg,"$1showbook.aspx?bookid=$2&chapterid=$3");

alert(rep);

//方式二 ,采用固定参数的回调函数

var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"showbook.aspx?bookid="+p3+"&chapterid="+p3});

alert(rep2);

//方式三,采用非固定参数的回调函数

var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"showbook.aspx?bookid="+args[2]+"&chapterid="+args[3];});

alert(rep3);

//方法四

//方式四和方法三很类似, 除了返回替换后的字符串外,还可以单独获取参数

var bookid;

var chapterid;

function captext()

{

var args=arguments;

bookid=args[2];

chapterid=args[3];

return args[1]+"showbook.aspx?bookid="+args[2]+"&chapterid="+args[3];

}

var rep4=url.replace(reg,captext);

alert(rep4);

alert(bookid);

alert(chapterid);

//除了使用replace方法获取正则表示式的分组外,还可以使用test ,exec方法获取分组,只是手法有所不同而已

var reg2=new regexp("(http://www.jquerycn.cn/bookreader/)(\\d+),(\\d+).aspx","gmi");

var m=reg2.exec("http://www.jquerycn.cn/bookreader/1017141,20361055.aspx");

var s="";

//获取所有的分组

for (i = 0; i < m.length; i++) {

s = s + m[i] + "\n";

}

alert(s);

bookid=m[2];

chapterid=m[3];

alert(bookid);

alert(chapterid);

//使用test方法获取分组

var reg3=new regexp("(http://www.jquerycn.cn/bookreader/)(\\d+),(\\d+).aspx","gmi");

reg3.test("http://www.jquerycn.cn/bookreader/1017141,20361055.aspx");

//获取三个分组

alert(regexp.$1);

alert(regexp.$2);

alert(regexp.$3);

var str="www.baidu.com";

//str.format("好","q")

str.replace(new regexp("(\\.)(bai)du","g"),function(){

for(var i=0;i

{

document.write(arguments[i]+"
");

}

document.write("-------------------------------------------------
");

});

两个例子(证明,replace传入正则参数和字符传参数结果不同):

复制代码 代码示例:

alert("123".replace("1",function(){var un;return un;})); //弹出undefined23

alert("123".replace(new regexp("1"),function(){var un;return un;})); //弹出23

三,js中replace方法的例子

replace() 方法用于将字符串用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

注意:如果用正则表达式替换时, regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

js replace方法的例子:

复制代码 代码示例:

var strm = "javascript is a good script language";

//在此我想将字母a替换成字母a

alert(strm.replace("a","a"));

//结果,它只替换了首字母。但如果加上正则表达式结果就不一样了!replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换!

var strm = "javascript is a good script language";

//在此我想将字母a替换成字母a

alert(strm.replace(/a/,"a"));

//但是结果还是没有更改,稍加修改就ok了。

var strm = "javascript is a good script language";

//在此将字母a全部替换成字母a,当正则表达式有"g"标志时,代表将处理整个字符串

alert(strm.replace(/a/g,"a"));

以上介绍了js replace函数的用法,一些js replace的使用实例,希望对大家有所帮助。

html5 replace,js replace函数用法详解相关推荐

  1. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  2. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  3. LayoutInflater的inflate函数用法详解

    LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...

  4. c++ memset 语言_C++中memset函数用法详解

    本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...

  5. mysql: union / union all / 自定义函数用法详解

    mysql: union / union all http://www.cnblogs.com/wangyayun/p/6133540.html mysql:自定义函数用法详解 http://www. ...

  6. python中mat函数_Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...

  7. ROW_NUMBER() OVER()函数用法详解

    今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg   A  , 查询表sys_equi_dict   B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...

  8. C++ search()函数用法详解(深入了解,一文学会)

    find_end() 函数用于在序列 A 中查找序列 B 最后一次出现的位置.那么,如果想知道序列 B 在序列 A 中第一次出现的位置,该如何实现呢?可以借助 search() 函数. search( ...

  9. C++ reverse()函数用法详解(深入了解,一文学会)

    reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的.定义源序列的前两个迭代器参数必须是双向迭代器.目的序列由第三个参数指定,它是目的序列的开始迭代器,也是一个输出 ...

  10. python中import re_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

最新文章

  1. 用!important解决IE和Mozilla的布局差别(转)
  2. 关于ASP.NET MVC的业务逻辑验证(validation)
  3. linux该专接本还是工作_工作还是考研,我究竟该怎么选?
  4. leetcode 220. Contains Duplicate III | 220. 存在重复元素 III (Treeset解法+分桶解法)
  5. 2017和2019对比图刷屏,真实扎心!苹果中国女老板也跟风晒图...
  6. 有关于iphone 音频 录制 播发
  7. C#4.0 可选参数和命名参数
  8. 实体门店如何做促销?
  9. 电商如何做企业总体架构?
  10. S7-200SMART案例分析——伺服选型(一)
  11. android 游戏 柄,Android手柄游戏中心-葡萄游戏厅
  12. 午间一乐:no zuo no die,唱起来
  13. WinRAR 4.01 key!注册文件 注册码
  14. 和跨域CORS有关的几个请求头和响应头请求头
  15. 京东API详情接口调用示例
  16. 亚博智能PS2手柄学习笔记
  17. 第九章 动态规划-1278:【例9.22】复制书稿(book)
  18. win2003服务器端口修改,Windows 2003修改3389端口的方法
  19. 顶点从观察空间变换到裁剪空间
  20. java 防火墙_java如何穿越防火墙

热门文章

  1. Python 位运算
  2. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
  3. 网络多线程编程-简单实现(模拟QQ的实现)
  4. Bandit Algorithm教材学习笔记
  5. MFC_改变窗口大小,随着鼠标的拖动改变
  6. 网络指标含义解释( 吞吐量 反应时间 延时 抖动 丢包)
  7. Deep Learning读书笔记4---深度模型中的优化
  8. java 正则表达式 电话_Java使用正则表达式验证手机号和电话号码的方法
  9. unity3d横版游戏移动_制作游戏并不困难。 回顾Unity3D上的小型移动项目
  10. esp32A1S ubuntu环境搭建