我尝试从字符串中删除一些非安全字符,但我相信我的RegExp对象有问题。
我在下面尝试做的是,如果存在编码长度大于3个字符的字符,则应将其替换为空格。
因此,如果编码值为%3D
,即=
符号,则可以在我的字符串中输入。但如果是’
撇号%E2%80%99
,则应将其替换为空格。
val = "Angelina’s";
valEnc = encodeURIComponent(val);
for(var i = 0; i < val.length; i++){
var a = val.substr(i,1);
if(encodeURIComponent(a).length > 3){
console.log(a, encodeURIComponent(a));
var re = new RegExp(encodeURIComponent(a),"ig");
valEnc.replace(re," ");
};
};
console.log(decodeURIComponent(valEnc));
此代码可以运行并记录我不需要的字符,但它不能用空格替换它们,我做错了什么?感谢。
答案 0 :(得分:2)
您似乎在这里不必要地使用正则表达式。一种方法是一次为一个字符构建结果字符串:
val = "Angelina’s";
valEnc = "";
for(var i = 0; i < val.length; i++){
var a = val.substr(i,1);
var e = encodeURIComponent(a);
if(e.length <= 3){
valEnc += e;
}
}
console.log(decodeURIComponent(valEnc));