无法转义正则表达式中的字符



我正在尝试处理反斜杠,以便能够将\t(single(转换为\t(double\(,但此代码/regex不起作用。你能帮我弄清楚我哪里做错了吗?

var a = {"value": '[{"skill":"tAgile,Scrum", "exp": 2}, {"skill": "Coding", "exp": 10 }]'};

a.value = a.value.replace(/\/g, "\\"); //handle special char
console.log(a);

您的字符串中没有任何文字反斜杠。例如,tAgile,Scrum相当于与Agile,Scrum连接的制表符。字符串中没有反斜杠,因此与字面反斜杠匹配的/\/g将不会与任何内容匹配。

您必须匹配已解释的字符,如t,并将其替换为文字反斜杠,后跟文字t:

var a = {"value": '[{"skill":"tAgile,Scrum", "exp": 2}, {"skill": "Coding", "exp": 10 }]'};
a.value = a.value.replace(/t/g, "\t"); //handle special char
console.log(a);

你必须写出你想要替换的每个字符。如果你有一堆(例如trnv等(,你可能会发现从一个对象开始将字符映射到它们的替换值并从中构建模式会更简洁,例如:

const replacements = {
't': '\t',
'r': '\r',
// etc
};

因为t已经被解析并作为t字符处理(我相信这是一个桌面(。查找t:

var a = {
"value": '[{"skill":"tAgile,Scrum", "exp": 2}, {"skill": "Coding", "exp": 10 }]'
};
a.value = a.value.replace(/t/g, "\t"); //handle special char
console.log(a);

或者你可以使用一个反勾的字符串:

var a = {
"value": `[{"skill":"tAgile,Scrum", "exp": 2}, {"skill": "Coding", "exp": 10 }]`
};
console.log(a);

最新更新