2016-04-19 24 views
-1

/,\s*\]/g]/,\s*\}/gから}に変更したいと考えています。本質的には、JSONオブジェクトまたは配列に末尾のカンマを削除するJSON前処理を記述したいと考えています。しかし、私が書いた正規表現は、カンマと閉じ括弧の中かっこや閉じ中括弧に一致します。だから、カンマの後にコンマだけを任意に削除することはできますが、閉じ括弧や中括弧は保持していますか?例えばjavascript regex partial replace

{ 
    "a": 1, 
    "b": [1,2,3,] , 
} 

があることを交換することが期待されている:例えば、主要なカンマを交換/

の削除について

{ 
    "a": 1, 
    "b": [1,2,3] 
} 

そして、どのように:

{ 
    ,"a": 1 
    , "b": [,1,2,3] 
} 

は、あることを交換することが期待されている:

{ 
    "a": 1, 
    "b": [1,2,3] 
} 
+0

ようlook aheadを使用することができます。代わりにJSONを修正してください。未来世代はあなたに感謝します。 –

+0

コメントをサポートする独自のJSONトランスレータを作成しています。カンマ許容値のテーリングはボーナスです。 –

答えて

0

あなたは絶対に必要な場合を除き、正規表現でJSONを処理しないでください

var regex = /,\s*(?=[\]}])/g; 
 

 
snippet.log('{a:b,}'.replace(regex, '')); 
 
snippet.log('{a:b, }, {a:b, }'.replace(regex, '')); 
 
snippet.log('[a:b,]'.replace(regex, '')); 
 
snippet.log('{a: [a:b, ], a: [a:b,], }'.replace(regex, '')); 
 

 
var regex2 = /(\{|\[)\s*,/g; 
 

 
snippet.log('{,a:b}'.replace(regex2, '$1')); 
 
snippet.log('{ ,a:b}, {a:b, }'.replace(regex2, '$1')); 
 
snippet.log('[,a:b]'.replace(regex2, '$1')); 
 
snippet.log('{ ,a: [,a:b], a: [ ,a:,b]}'.replace(regex2, '$1'));
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

ありがとうございます。あなたは '?='について説明できますか? –

+1

@ElgsQianChen http://www.regular-expressions.info/lookaround.html –

+0

先頭のカンマの削除/置き換えの状況について'/ {\ s *、/ g'を' {'と'/\ [\ s *、/ g'を '[' –