如果我的id包含任何元字符追加'\\';在Javascript中的元字符之前?

如果我的id包含任何元字符追加'\\';在Javascript中的元字符之前?,javascript,jquery,regex,Javascript,Jquery,Regex,我需要一个javascript函数来检查我的变量是否包含任何特殊字符,然后在该特殊字符之前附加“\”: function escapeStr(str) { var specChar = /([ !"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~])/; if (str.match(specChar)) return str.replace('+special character+'

我需要一个javascript函数来检查我的变量是否包含任何特殊字符,然后在该特殊字符之前附加“\”:

function escapeStr(str) {
            var specChar = /([ !"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~])/;
            if (str.match(specChar))
                return str.replace('+special character+', '\\'+special character+'');
            else
                return str;
        }
函数escapeStr(str){
var specChar=/([!“\$%&'()*+,.\/:;?@[\\\]^`{124;}]/;
if(str.match(specChar))
返回str.replace(“+特殊字符+”,“\\”+特殊字符+”;
其他的
返回str;
}

您可以将regexp传递给
字符串。replace
,并且您已经使用了括号块,因此您可以在replace字符串中引用您的特殊字符。此外,如果您在regexp的末尾添加全局标志,它将遍历所有字符,而不仅仅是第一次查找

function escapeStr(str) {
    var specChar = /([ !"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~])/g;
    return str.replace(specChar, '\\$1');
}
函数escapeStr(str){
var specChar=/([!“\$%&'()*+,.\/:;?@[\\]^`{124;}]/g;
返回str.replace(specChar,\\$1');
}

调用escapeStr(“Hello&World!”)将返回
“Hello\\\&\World\!”

实际上,这些str是html控件的ID,我想把\\放在不需要的特殊字符前面,.match',因为.replace`已经在搜索子字符串(或正则表达式)和字符串之间的匹配,并用一个新的子字符串替换匹配的子字符串。实际上,这些str是html控件的id,我想放在\\这个特殊字符之前,它会试图避免id出现这种情况。这是不切实际的,很可能会给你带来麻烦或是带来意想不到的结果。你能告诉我1美元是多少吗@MildlyInteresting在regexp中,如果将其中的一部分放在括号
()
中,则您正在创建一个可以在替换字符串中引用的组。在你的情况下,这是一个特殊的角色。因此,在替换字符串中,您在反斜杠后引用了特殊字符。非常感谢它对这种类型的字符串代码“AB%N.MH*HT^KLI#NJH89KI)JK”也起到了作用