簡體   English   中英

檢測並刪除javascript對象文字尾隨逗號

[英]Detect and remove javascript object literal trailing commas

IE7不接受JavaScript對象文字中的結尾逗號作為有效的JavaScript語法:

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

目前,我處理此問題的方法是使用IE7打開我的網站,然后使用控制台查找無效的js文件。

您知道如何使用UNIX命令行在JavaScript文件中定位(甚至更好地刪除)尾部逗號嗎?

我試圖grep這些逗號,但需要多行正則表達式。 我也用谷歌搜索,沒有發現有用的東西。

JSHint可以為您找到那些。 您可以下載它並從命令行運行它。 它還具有許多有用的其他功能,可以為您檢查(以及關閉不需要的功能的選項)。

您可以編寫一個腳本來為您執行此操作:

$ 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 
};

它不是完美的,但是它可以找到文件(不是在打印行):

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

答案部分取自此問題:

需要多行搜索的正則表達式(grep)

聚苯乙烯

當然,有一個缺陷是這樣的:

// whatever is done next,
}

它將被報告為尾巴昏迷,而事實並非如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM