Регулярка для JSON-строки 
		
		
		
		Есть ли регулярное выражение для проверки того, что строка - данные в JSON? 
	После полу часа поисков, нашёл эту функцию: 
function isJSONString(string) {
	try {
		if(typeof object !== "string") {
			throw new Error('');
		}
		JSON.parse(string);
		return true;
	} catch(e) {
		return false;
	} 
};
, но, я надеюсь, можно это сделать через регулярку? Пытался написать сам, но не знаю что делать с валидацией. Моё выражение искало по парным скобкам и первому слову (как {"test"} и ["test"]), но не гарантировало валидности дальше, да и являлось страшно вырвиглазным: 
var myReg = /^([\{|\[]*".+"[[:|,]{1}.*[\}|\]]]?)$/;
alert(myReg.test('["test", false, {}]') // true, но...
alert(myReg.test('["test", {ololo} invalid]')) // true!
. Всё-равно, будет ли проверка происходить через exec (возвратит всю строку), или через test. Пример: 
alert(isJSONString.test('justString')) // false
alert(isJSON.test('["just","Array"]')) // true
Спасибо :з  | 
	
		
 Нахуя? 
	 | 
	
		
 Ты вобще вкурсе что следующие литералы - тоже JSON? 
	
alert([JSON.parse('true'), JSON.parse('null'), JSON.parse('14.6')]);
 | 
	
		
 danik.js, 
	предположим, что мне нужно только для объектов и массивов.  | 
	
		
 2chan, забей. Это не реально. 
	 | 
	
		
 try { data=JSON.parse(data); } catch (e) {} // ну это и единственный способ, можно еще написать лексер. 
	 | 
	
		
 Sweet, реально, но в несколько проходов\рекурсивно.  
	Само собой только в качестве бреда.) Вот например набросок регулярки для объекта в json: 
/\{(?:\s*".*?(?=([^\\](?:\\\\)*"))\1\s*:\s*(?:".*?(?=([^\\](?:\\\\)*"))\2|null|false|true|(?:-?\d+|\d*\.\d+)(?:e[+-]?\d+)?)\s*,)*\s*".*?(?=([^\\](?:\\\\)*"))\3\s*:\s*(?:".*?(?=([^\\](?:\\\\)*"))\4|null|false|true|(?:-?\d+|\d*\.\d+)(?:e[+-]?\d+)?)\s*\}/g
 | 
	
		
 а как же escape-последовательности? 
	 | 
	
		
 Sweet, 
	реально. Aetae это доказал.  | 
	
		
 Аркадий Укупник, м? С ними всё в порядке. Вот только моя регулярка не ищет пустые строки. Я помню что как-то это когда-то решал, но сейчас думать лень, а кода под рукой нет.) 
	 | 
	
		
 Цитата: 
	
 Цитата: 
	
 
function isJSONString(string) {
    try {
        if(typeof string !== "string") {
            throw new Error('');
        }
        myJSONParser(string); // Fuck yeah!
        return true;
    } catch(e) {
        return false;
    }
}
 | 
| Часовой пояс GMT +3, время: 14:42. |