正则表达式和ascii颜色转义

时间:2011-07-15 18:40:10

标签: javascript

我有一个脚本输出带有大量与颜色有关的ASCII转义序列的代码(例如,\033[91m在打印到终端时将文本的颜色更改为红色)。我想尝试将其输出为HTML,所以我尝试了这个:

str = str.replace(new RegExp('\033[91m', 'g'),
                 '<span style="color:#ff0011">')
         /*.replace more such codes*/;

但是,我收到以下错误:

  

SyntaxError:无效的正则表达式:/[91m/:未终止的字符类

我该如何解决?

3 个答案:

答案 0 :(得分:3)

您可以将[放在像这样的字符类中:

str = str.replace(new RegExp('\033[[]91m', 'g'),
             '<span style="color:#ff0011">');

http://jsfiddle.net/Wd5au/

答案 1 :(得分:2)

将其更改为'\033\\[91m'。即你必须逃避'[',以便它不会认为你给它一个在该位置匹配的字符列表。

答案 2 :(得分:0)

var str = 'blahblah\033[91mblahblah';
str = str.replace(new RegExp('[\\033[91m]+', 'g'),
             '<span style="color:#ff0011">');

alert(str);

示例:http://jsfiddle.net/8bybx/