JavaScript正则表达式“无重复”错误

时间:2012-05-18 09:55:17

标签: javascript regex

我在尝试获取代码时会出现此错误,以便对Minic语言进行词法分析!

document.writeln("1,2 3=()9$86,7".split(/,| |=|$|/));

document.writeln("<br>");
document.writeln("int sum ( int x , int y ) { int z = x + y ; }");
document.writeln("<br>");
document.writeln("int sum ( int x , int y ) { int z = x + y ; }".split(/,|*|-|+|=|<|>|!|&|,|/));

我在最后一行的调试器上出错Uncaught SyntaxError:无效的正则表达式:没有什么可重复!!

2 个答案:

答案 0 :(得分:6)

您需要转义特殊字符:

/,|\*|-|\+|=|<|>|!|&|,|/

See需要转义哪些特殊字符:

答案 1 :(得分:4)

您需要转义字符+*,因为它们在正则表达式中具有特殊含义。我也非常怀疑你想要最后一个| - 这会将空字符串添加到匹配的元素中,从而得到一个每个元素有一个char的数组。

这是固定的正则表达式:

/\*|-|\+|=|<|>|!|&|,/

但是,通过使用字符类,您可以使其更具可读性,甚至更快:

/[-,*+=<>!&]/

演示:

js> "int sum ( int x , int y ) { int z = x + y ; }".split(/[-,*+=<>!&]/);
[ 'int sum ( int x ',
  ' int y ) { int z ',
  ' x ',
  ' y ; }' ]