Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转义字符串而不手动转义它们_Javascript_Jquery_Regex_String_Replace - Fatal编程技术网

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, '\\$&');
}

在这种情况下,这是一个重复:可能重复的嗯,我的意思是我不手动输入字符串,它是自动生成的,很抱歉