Пример ввода: < /p>
Код: Выделить всё
{
"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
< /code>
Я сделал закрытие массива и объектов необязательно (разрешить ноль или один раз). Но есть некоторые случаи, когда это потерпит неудачу, например, когда вы откроете объект, не закрывая другой объект (показанный ниже), регулярность все еще найдет совпадение. < /p>
Недостаточно, но все же соответствует: < /p>
{
"JSON": [{
"foo":"bar",
"details": {
"name":"bar",
"id":"bar",{
< /code>
Как проверить частичный ввод JSON? Итак, теперь мне нужна корпорация, которая должна работать без рекурсии
Подробнее здесь: https://stackoverflow.com/questions/601 ... valid-json
Мобильная версия