2016-04-19 3 views
-1

Я надеюсь заменить /,\s*\]/g на ] и /,\s*\}/g до }. По сути, я хочу написать предварительный процесс JSON, который удаляет хвостовые запятые в объекте или массиве JSON. Однако регулярное выражение, которое я написал, соответствует запятой и скобкам закрывающей скобки или закрывающим фигурным скобкам. Итак, как я могу удалить только запятую, если есть какие-либо пробелы после запятой, но сохранить закрытие скобки или фигурные скобки?javascript регулярное выражение частичная замена

Например:

{ 
    "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

Не выполнять процесс JSON с регулярным выражением, если это абсолютно необходимо. Вместо этого исправьте JSON. Будущие поколения будут вам благодарны. –

+0

Я пишу своего переводчика JSON, который поддерживает комментарии. Толерантность к запятой - это бонус. –

ответ

0

Вы можете использовать look ahead как

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' на '['? –

Смежные вопросы