Показать сообщение отдельно
  #1 (permalink)  
Старый 28.10.2014, 19:57
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Регулярка для 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

Спасибо :з

Последний раз редактировалось 2chan, 28.10.2014 в 20:36. Причина: Добавление деталей...
Ответить с цитированием