Javascript 转义字符串而不手动转义它们
我需要替换字符串中的一组字符,因为我无法控制字符串,所以我不能仅转义字符串中的Javascript 转义字符串而不手动转义它们,javascript,jquery,regex,string,replace,Javascript,Jquery,Regex,String,Replace,我需要替换字符串中的一组字符,因为我无法控制字符串,所以我不能仅转义字符串中的+符号 所以我的问题是,如果我把我的值改为“繁殖”,它会取代字符串。如何在不手动转义字符串的情况下转义字符串?我试过了 var s = "http://example.co/kb/tags/anazolic~racing~all+articles~breeding"; var value = 'all+articles'; var find = new RegExp('\~?\\b' + value + '\\b',
+
符号
所以我的问题是,如果我把我的值改为“繁殖”,它会取代字符串。如何在不手动转义字符串的情况下转义字符串?我试过了
var s = "http://example.co/kb/tags/anazolic~racing~all+articles~breeding";
var value = 'all+articles';
var find = new RegExp('\~?\\b' + value + '\\b', 'g');
var l = s.replace(find, '');
console.log(l);
演示:
我还尝试添加:value=encodeURIComponent(value)代码>但这也不起作用
有什么帮助吗?将第三行更改为:
var find = new RegExp('\~?\\b' + value.replace(/\+/g,'\\+') + '\\b', 'g');
加号是正则表达式中的特殊字符,因此需要使用反斜杠对其进行转义
(另外,我不确定你所说的“存储在变量中”是什么意思。JavaScript中的所有内容都是“存储在变量中”。或者你的真正意思是“存储在RegExp对象中”)因此,如果我理解正确,你想转义特殊的正则表达式字符
value = value.replace(/[-\\()\[\]{}^$*+.?|]/g, '\\$&');
当然,您可以将其提取到函数中:
function escapeRegex(value) {
return String(value).replace(/[-\\()\[\]{}^$*+.?|]/g, '\\$&');
}
在这种情况下,这是一个重复:可能重复的嗯,我的意思是我不手动输入字符串,它是自动生成的,很抱歉