JavaScript正则表达式;“没有什么可重复的”;错误

JavaScript正则表达式;“没有什么可重复的”;错误,javascript,regex,Javascript,Regex,我在试图获取代码中的标记以对Minic langauge进行词法分析时出现了这个错误 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

我在试图获取代码中的标记以对Minic langauge进行词法分析时出现了这个错误

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(/,|*|-|+|=|<|>|!|&|,|/));
document.writeln(“1,23=()9$86,7”。拆分(/,| |=|$|/);
书面文件(“
”); writeln(“intsum(intx,inty){intz=x+y;}”); 书面文件(“
”); document.writeln(“int sum(int x,int y){int z=x+y;}”).split(/,|*|-|+|=| |!|&|,|/);

最后一行Uncaught SyntaxError:无效正则表达式:无需重复

您需要转义特殊字符:

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

需要转义的特殊字符:

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

下面是固定正则表达式:

/\*|-|\+|=|<|>|!|&|,/
/\*|-|\+|=| |!|&/
但是,您可以通过使用字符类使其更可读,甚至更快:

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

js>“整数和(整数x,整数y){intz=x+y;}”。拆分(/[-,*+=!&]/);
[‘整数和(整数x’,
'int y){int z',
“x”,
'y;}']

-
不是特殊字符,除非在
[]
中使用的位置不是第一个/最后一个字符。
js> "int sum ( int x , int y ) { int z = x + y ; }".split(/[-,*+=<>!&]/);
[ 'int sum ( int x ',
  ' int y ) { int z ',
  ' x ',
  ' y ; }' ]