html5 replace,js replace函数用法详解
如何正确使用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函数用法详解相关推荐
- ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...
- C++中substr()函数用法详解
C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...
- LayoutInflater的inflate函数用法详解
LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...
- c++ memset 语言_C++中memset函数用法详解
本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...
- mysql: union / union all / 自定义函数用法详解
mysql: union / union all http://www.cnblogs.com/wangyayun/p/6133540.html mysql:自定义函数用法详解 http://www. ...
- python中mat函数_Python中flatten( )函数及函数用法详解
flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...
- ROW_NUMBER() OVER()函数用法详解
今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg A , 查询表sys_equi_dict B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...
- C++ search()函数用法详解(深入了解,一文学会)
find_end() 函数用于在序列 A 中查找序列 B 最后一次出现的位置.那么,如果想知道序列 B 在序列 A 中第一次出现的位置,该如何实现呢?可以借助 search() 函数. search( ...
- C++ reverse()函数用法详解(深入了解,一文学会)
reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的.定义源序列的前两个迭代器参数必须是双向迭代器.目的序列由第三个参数指定,它是目的序列的开始迭代器,也是一个输出 ...
- python中import re_Python3中正则模块re.compile、re.match及re.search函数用法详解
本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...
最新文章
- 用!important解决IE和Mozilla的布局差别(转)
- 关于ASP.NET MVC的业务逻辑验证(validation)
- linux该专接本还是工作_工作还是考研,我究竟该怎么选?
- leetcode 220. Contains Duplicate III | 220. 存在重复元素 III (Treeset解法+分桶解法)
- 2017和2019对比图刷屏,真实扎心!苹果中国女老板也跟风晒图...
- 有关于iphone 音频 录制 播发
- C#4.0 可选参数和命名参数
- 实体门店如何做促销?
- 电商如何做企业总体架构?
- S7-200SMART案例分析——伺服选型(一)
- android 游戏 柄,Android手柄游戏中心-葡萄游戏厅
- 午间一乐:no zuo no die,唱起来
- WinRAR 4.01 key!注册文件 注册码
- 和跨域CORS有关的几个请求头和响应头请求头
- 京东API详情接口调用示例
- 亚博智能PS2手柄学习笔记
- 第九章 动态规划-1278:【例9.22】复制书稿(book)
- win2003服务器端口修改,Windows 2003修改3389端口的方法
- 顶点从观察空间变换到裁剪空间
- java 防火墙_java如何穿越防火墙
热门文章
- Python 位运算
- 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 网络多线程编程-简单实现(模拟QQ的实现)
- Bandit Algorithm教材学习笔记
- MFC_改变窗口大小,随着鼠标的拖动改变
- 网络指标含义解释( 吞吐量 反应时间 延时 抖动 丢包)
- Deep Learning读书笔记4---深度模型中的优化
- java 正则表达式 电话_Java使用正则表达式验证手机号和电话号码的方法
- unity3d横版游戏移动_制作游戏并不困难。 回顾Unity3D上的小型移动项目
- esp32A1S ubuntu环境搭建