今天因为一些原因来看这篇博文,测试了一下根本不对。replace根本没有string.replace("字符","字符")这样的写法,而是stringObject.replace(regexp/substr,replacement)这样的语法形式
仔细查了一遍原来的项目,才发现是因为对原有的js方法进行了重载。
replaceAll
String.prototype.replaceAll = function (s1, s2) {
return this.replace(new RegExp(s1, "gm"), s2);//使用了原有方法replace进行了正则转换
}
“g”标志表示正则表达式使用的global(全局)的状态
"i"标志表示忽略大小写
"m"标志表示多行查找(允许跨行)
js原有的方法模式:
http://www.w3school.com.cn/jsref/jsref_replace.asp
replace替换
if (format == undefined) {
format = "";
}
format = format.replace(/,/g, ",");//替换中文逗号,replaceAll针对的是$()对象,
想要replace全局的话,则加个/g表示全局
"abcabc".replace(/a/g,"A")
结果:AbcAbc
而如果是"abcabc".replace("a/g","A")则不会有任何变化,结果仍旧是"abcabc"
因为这里的/g就只是两个"/","g"字符,而不是正则中的全局含义
"a/gb/ga/g".replace("a/g","A")
结果:"Ab/ga/g"
"abc".replace("ab","1")
结果:"1c"
replaceAll相关:这个感觉就是针对html上的对象的
jquery API 手册中关于replaceAll的介绍: http://jquery.cuishifeng.cn/replaceAll.html
w3school中的关于replaceAll的介绍:http://www.w3school.com.cn/jquery/manipulation_replaceall.asp
语法:$(content).replaceAll(selector)=》用匹配的元素替换掉所有 selector匹配到的元素。
示例:
1.描述:
把所有的段落标记替换成加粗标记
2.HTML 代码:
<p>Hello</p><p>cruel</p><p>World</p>
3.jQuery 代码:
$("<b>Paragraph. </b>").replaceAll("p");
4.结果:
<b>Paragraph. </b><b>Paragraph. </b><b>Paragraph. </b