JQ-如何利用replace实现replaceAll方法
本文主要解决的是特殊字符replaceAll的实现
问题1:由于JS没有自带replaceAll方法,所以如果我们在前端页面如果需要替换字符串中所有的某个字符时,需要对自带的replace方法进行改进。网上的普遍方法(测试1,2,3):
形如:str1.replace(new RegExp('z', "gm"), '@');
问题2:以上方法存在一个缺陷,测试3的时候对特殊字符没有办法替换。需要使用被替换字符需要使用正则方式书写,如测试4:
var reg = /\^/g;
msg = $("#oldMsg").text().replace(new RegExp(reg, "gm"), '@');
完整测试代码如下.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<p id="oldMsg">1224^zzz^ssssssss^pkkpkop</p>
<p id="newMsg"></p>
<input type="button" onclick="exchangeChar();" value="替换" />
</body>
<script type="text/javascript" src="js/jquery.min.js" ></script>
<script>
function exchangeChar() {
// 网上普遍说的方法如:str1.replace(new RegExp('z', "gm"), '@');
var msg = $("#oldMsg").text();
// 测试1:替换字母z为@,结果,成功:1224^@@@^ssssssss^pkkpkop
// 结论1:对字母替换有效
// msg = msg.replace(new RegExp('z', "gm"), '@');
// 测试2:替换数字2为@,结果,成功:1@@4^zzz^ssssssss^pkkpkop
// 结论2:对数字替换有效
// msg = msg.replace(new RegExp('2', "gm"), '@');
// 测试3:替换特殊符号^为@,结果,失败:@1224^zzz^ssssssss^pkkpkop
// 结论3:对特殊符号替换无效
// msg = msg.replace(new RegExp('^', "gm"), '@');
// 测试4:替换特殊符号^为@,结果,成功:1224@zzz@ssssssss@pkkpkop
// 结论4:对特殊符号替换有效
var reg = /\^/g;
msg = $("#oldMsg").text().replace(new RegExp(reg, "gm"), '@');
$("#newMsg").html(msg);
}
</script>
</html>