`
20386053
  • 浏览: 433197 次
文章分类
社区版块
存档分类
最新评论

String.replace高级用法详解

 
阅读更多
String.replace( ) 简介
语法:
string.replace(regexp, replacement)
regexp :您要执行替换操作的正则表达式,如果传入的是一个字符串,那就会当作普通字符来处理,并且只会执行一次替换操作;如果是正则表达式,并且带有 global (g) 修饰符,则会替换所有出现的目标字符,否则,将只执行一次替换操作。
replacement :您要替换成的字符。
返回值是执行替换操作后的字符串。


基本用法
1.基本替换
var text = "你是大帅哥!";
text.replace(/帅哥/, "美女");
// 返回:你是大美女!

2.结合正则表达式flag是实现全局替换:
var text= "帅哥,你是大帅哥!";
text.replace(/帅哥/g, "美女");
// 返回:美女,你是大美女!


子表达式
正则表达式中以括号()为子表达式,可以在替换字符串中或者RegExp对象下用$加序号的方式获取子表达式匹配到的字符串,如:

1.下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
var reg=new RegExp("(http://www.test.com/)(\\d+),(\\d+).jsp","gmi");
var url="http://www.test.com/1017141,20361055.jsp";
var rep=url.replace(reg,"$1ShowBook.jsp?bookId=$2&chapterId=$3");
//结果:rep=http://www.test.com/ShowBook.jsp?bookId=1017141&chapterId=20361055

2.通过RegExp对象方式
使用上述例子的定义
reg.test(url);
rep=RegExp.$1+"ShowBook.jsp?bookId="+RegExp.$2+"&chapterId="+RegExp.$3;
//结果与上述例子一致


回调函数
replace可以接受回调函数,形如replace(regexp, replaceFunc),替换结果是function的返回值,例如:
//将所有字符首字母大写
var text = 'a journey of a thousand miles begins with single step.';
text.replace(/\b\w+\b/g, function(word) {
return word.substring(0,1).toUpperCase( ) +
word.substring(1);
});
// 返回:A Journey Of A Thousand Miles Begins With Single Step.

其中,回调函数的参数规则如下:
replaceFunc(match[,$1,$2...],index,originalStr)
match为匹配到的字符串;
$n(中括号里参数)可以有0-N个,为第一个参数中匹配到一个子表达式的字符串,括号有几组,则参数有几个;
index为第一个参数中匹配到的字符串所在位置;
originalStr为用来匹配的原字符串
例如:
var str="<div><%=this.name%></div>";
str=str.replace(/<%=this\.([^%>]+)%>/g,function(){
console.log(arguments);
return "hui";
})
console.log(str)
//结果:
["<%=this.name%>", "name", 5, "<div><%=this.name%></div>"] test.html:11
<div>hui</div>


模板函数
稍加处理,我们可以得到一个基本的模板函数:
function compile(template,data){
return template.replace(/<%=this\.([^%>]+)%>/g,function(){
return data[arguments[1]];
})
}
var str="<div><%=this.name%>:<%=this.value%></div>";
var data={name:"性别",value:"男"}
console.log(compile(str,data));
//结果:
<div>性别:男</div>
分享到:
评论

相关推荐

    js中string之正则表达式replace方法详解

    replace方法是javascript涉及到正则表达式中较为复杂的一个方法,严格上说应该是string对象的方法。只不过牵扯到正则的时候比较多一些。需要我们灵活的使用。 语法: stringObj.replace(regexp/substr,replacement)...

    js中关于String对象的replace使用详解

    今天在读Qwrap的源码stringH时里边有个 代码如下: format: function(s, arg0) { ...)//I love you format的实现方式主要是用到了String对象的replace方法: replace:返回根据正则表达式进行文字替换后的字符串的复制。

    《C++String深入详解2.0版》PDF

    一、 C++的string的使用 3 1.1 C++ string简介 3 1.2 string的成员 3 1.2.1 append 3 1.2.2 assign 4 1.2.3 at 4 1.2.4 begin 5 1.2.5 c_str 5 1.2.6 capacity 5 1.2.7 clear 6 1.2.8 compare 6 1.2.9 copy 6 1.2.10...

    javascript replace()用法详解附实例代码

    在javascript中,String的函数replace()简直太让人喜爱了。它灵活而强大的字符替换处理能力,让我不禁想向大家介绍它。

    JavaScript中的replace()方法使用详解

    string.replace(regexp/substr, newSubStr/function[, flags]); 下面是参数的详细信息: regexp : 一个RegExp对象。匹配被替换参数的返回#2. substr : 一个字符串,由newSubStr 来替换 newSubStr : 它取代从参数...

    JS中的Replace()传入函数时的用法详解

    replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。 废话不多说了,...

    js replace 与replaceall实例用法详解

    该字符串不会被 replace 方法修改。 rgExp 必选项。为包含正则表达式模式或可用标志的正则表达式对象。也可以是 String 对象或文字。如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要...

    Oracle中的translate函数和replace函数的用法详解

    translate返回expr,其中from_string中的每个字符的所有出现都被to_string中的相应字符替换,而replace 函数将char中的字符串search_string全部转换为字符串replacement_string。下面给大家分享Oracle中的translate...

    详解JavaScript 中的 replace 方法

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 stringObject.replace(regexp/substr,replacement) 参数 描述 regexp/substr 必需。规定子字符串或要替换的模式...

    自己动手实现jQuery Callbacks完整功能代码详解

    用法和$.Callbacks完全一致 , 但是只是实现了add , remove , fire , empty, has和带参数的构造函数功能, $.Callbacks 还有disable,disabled, fireWith , fired , lock, locked 方法  代码如下:  代码如下: ...

    详解C++中string的用法和例子

    想使用string首先要在头文件当中加入&lt; string&gt; 声明方式也很简单 声明: string s;//声明一个string 对象 string ss[10];//声明一个string对象的数组 初始化: 使用等号的初始化叫做拷贝初始化,不使

    js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。 substring() 方法用于提取字符串中介于两...

    VBSCRIP5 -ASP用法详解

    Replace 方法 替换在正则表达式搜索中已发现的正文。 RGB 函数 返回表示 RGB 颜色值的数。 Right 函数 返回字符串最右边的指定数量的字符。 Rnd 函数 返回一随机数。 Round 函数 返回指定位数、四舍五入的数。 ...

    JavaScript String 对象常用方法详解

    replace(): 被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串。 slice(): 摘取一个字符串区域,返回一个新的字符串。 split(): 通过分离字符串成字串,将字符串对象分割成字符串数组。 substr...

    详解html-webpack-plugin插件(用法总结)

    主要介绍了详解html-webpack-plugin插件(用法总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Python3中urlencode和urldecode的用法详解

    urllib.parse.unquote(string, encoding='utf-8', errors='replace') 示例代码如下: test = 微信公众账号比特量化 print(test) new = urllib.parse.quote(test) print(new) print(urllib.parse.unquote(new)) ...

    JavaScript详解(第2版)

     17.3.3 replace()方法   17.3.4 split()方法   17.4 获取控制——元字符   17.4.1 点元字符   17.4.2 字符类   17.4.3 元符号   17.4.4 重复模式匹配元字符   17.4.5 锚元字符   17.4.6 ...

    PHP中header函数的用法及其注意事项详解

    void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : Send a raw HTTP header 下面有一些使用header的几种用法: 1、使用header函数进行跳转页面;  header(‘Location:’.$...

Global site tag (gtag.js) - Google Analytics