Пример ввода:
Код: Выделить всё
{
"JSON": [{
"foo":"bar",
"details": {
"name":"bar",
"id":"bar",
Код: Выделить всё
/ (?(DEFINE)
(? -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? )
(? true | false | null )
(? " ([^"\n\r\t\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
(? \[ (?: (?&json) (?: , (?&json) )* )? \s* \]{0,1} )
(?
\s* (?&string) \s* : (?&json) )
(? \{ (?: (?&pair) (?: , (?&pair) )* )? \s* \}{0,1} )
(? \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) \s* )
) \A (?&json)\,{0,1} \Z /six
Недействительно, но соответствует:
Код: Выделить всё
{
"JSON": [{
"foo":"bar",
"details": {
"name":"bar",
"id":"bar",{
РЕДАКТИРОВАТЬ:
Как упоминалось @ntahdh в комментариях, это регулярное выражение не будет работать с использованием java.util.regex. Итак, теперь мне нужно регулярное выражение, которое должно работать без рекурсии
Подробнее здесь: https://stackoverflow.com/questions/601 ... valid-json
Мобильная версия