用\ x替换模式

时间:2016-05-23 21:23:35

标签: javascript regex

我有一些字符串,其中重音字符以十六进制编码,如下所示:

extrémité>抽\X2\00 E9 \X0\ {MIT {1}}的 E9 \X2\00

所以我打算用\X0\ (charcode)替换\X2\00 (字符代码) \X0\ 但我不能写\X

'\x'

我该怎么做?

这既不起作用:

out.replace(/\X2\00/g,'\x');

这是一个解析器,这是一个文件行:

out.replace(/2\00/g,'');

1 个答案:

答案 0 :(得分:3)

您需要在JavaScript正则表达式和字符串中转义反斜杠。

根据您的评论,我了解您的源数据(在文件中)如下所示:

\X2\00E9\X0\

请注意,如果要重现此数据(用于测试),则需要在控制台中转义这些反斜杠。在JavaScript表示法中,上述数据表示为'\\X2\\00E9\\X0\\'

另外,要生成重音字母,您可以使用charFromCode(),并使用带有回调函数的replace()



// note that in JS strings, backslashes need to be escaped to get 
// the text as it appears in your file. This is just to mimic the file input
var str = 'extr\\X2\\00E9\\X0\\mit\\X2\\00E9\\X0\\';

// .. and also in JS regexes, the backslashes need to be escaped.
str = str.replace(/\\X2\\00(..)\\X0\\/g, function(_, match) {
    // match is now the two letter hex code, convert to number and then
    // to character, and return it as replacement 
    return String.fromCharCode(parseInt(match,16));
});

document.write(str);