JSFiddle - React, Tailwind, and code Playground
JavaScript
String.prototype.isJSON = function() {
if (this == null) // ошибочный .call
return false;
var str = this;
str = str.replace(/\s/g, '').replace(/\n|\r/, '');
if (str == '')
return false;
// вот это спиздил с github.com/joaquimserafim/is-json
if (/^\{(.*?)\}$/.test(str))
return /"(.*?)":(.*?)/g.test(str);
if (/^\[(.*?)\]$/.test(str)) {
return str.replace(/^\[/, '')
.replace(/\]$/, '')
.replace(/\},\{/g, '}\n{')
.split(/\n/)
.map(function (s) { return isJSON(s); })
.reduce(function (prev, curr) { return !!curr; });
}
// а всё ниже - писал сам
// ибо оригинал не понимает примитивов
if (/^(true|false|null)$/.test(str))
return true;
if (/^-?(0|[1-9]+[0-9]*)(\.\d+)?(e[+-]?[0-9]+)?$/i.test(str)) // RegExp построен согласно описанию типа number на http://json.org
return true;
if (str.startsWith('"') && str.endsWith('"') && !/[^\\]"/.test(str.slice(1, -1))) // это ещё нужно будет допилить
return true;
return false;
};