检测并删除javascript对象文字尾随逗号

时间:2012-07-03 10:46:19

标签: javascript regex internet-explorer

IE7中不接受JavaScript对象文字中的尾随逗号作为有效的JavaScript语法:

var a = {
  foo: 12,
  bar: 13,//this is ok in all browsers except ie7
};

目前我处理此问题的方法是使用IE7打开我的网站并使用控制台查找无效的js文件。

您是否知道如何使用UNIX命令行找到(甚至更好地删除)javascript文件中的尾随逗号?

我尝试使用这些逗号,但需要多行正则表达式。我也搜索了这个主题,没有发现任何有用的东西。

3 个答案:

答案 0 :(得分:4)

JSHint可以找到适合你的那些。您可以下载它并从命令行运行它。它还有许多有用的附加功能,可以为你检查(以及关闭你不需要的选项)。

答案 1 :(得分:2)

您可以编写一个脚本来执行此操作:

$ cat 1.pl 
local $/;

my $data = <>;
$data =~ s@,(\s*)((?://.*?\n)?)(\s*)}@ $1$2$3}@msg;
print $data;

$ cat 1.txt 
var a = {
  foo: 12,
  bar: 13, //this is ok in all browsers except ie7
};

var b = {
  foo: 14,
  bar: 15,
};

$ perl -i 1.pl 1.txt

$ cat 1.txt 
var a = {
  foo: 12,
  bar: 13  //this is ok in all browsers except ie7
};

var b = {
  foo: 14,
  bar: 15 
};

答案 2 :(得分:2)

它不完美,但它找到文件(它不是印刷线):

find -name '*.js' -exec grep -Pzl ",\s*\n+(\s*\/\/.*\n)*\s*[\}\)\]]" {} \;

答案部分来自这个问题:

Regex (grep) for multi-line search needed

PS

肯定有一个这样的缺陷:

// whatever is done next,
}

它将被报告为尾随昏迷,而不是。