Показать сообщение отдельно
  #24 (permalink)  
Старый 07.08.2014, 14:14
Кандидат Javascript-наук
Отправить личное сообщение для riva Посмотреть профиль Найти все сообщения от riva
 
Регистрация: 24.06.2013
Сообщений: 115

Aetae, Спасибо! Ещё чуть-чуть и у меня получится Пишу чуть-чуть и смеюсь над этим, так-как каждый свой вопрос я сопровождаю мыслями, что получив на него ответ, я закончу. Но появляется новая проблема, которая сложнее и запутанней предыдущей. Вот и в этот раз так.

Чтобы было понятно, объясню полностью.. Вот какое выражение у меня получилось -
var re = /(^|\n)(?=\/)\/(?=\*{1,2})(?!\*{3,})\*{1,}(?=\n{1,1})(?!\n{2,})\n([\s\S]+?)(?=\*)\*(?=\/)\/(?=\n|$)\n|$/g;

Оно громоздкое, но по другому не как, ведь в комментариях может находится строка, которая содержит похожую на комментарии последовательность. Такой ситуации я лично никогда не встречал, но чтобы перестраховаться, сделал проверку на обязательную последовательность. Вот..
Вот имитатор самой строки -
var str = 'DDDDDDDDDDD\n/**\n * IIIIIIIIIII\n * IIIIIIIIIII\n * \n */\nXXXXXXXXXXX\n\n/**\n * NNNNNNNNNNNNN\n * NNNNNNNNNNNNN\n */\nEEEEEEEEEEE\n';

И вот код цикла -
var array = [];
var result =[];
var isHasNext = true;

while(isHasNext){
	if(array = re.exec(str)){
		result.push(array);
	}else{
		isHasNext = false;
	}
}

console.log(result);


И в ходе выполнения цикла, я получаю переполнение стека из-за того, что exec не возвращает null. Его глючит на -
[ '',
  undefined,
  undefined,
  index: 121,
  input: 'DDDDDDDDDDD\n/**\n * IIIIIIIIIII\n * IIIIIIIIIII\n * \n */\nXXXXXXXXXXX\n\n/**\n * NNNNNNNNNNNNN\n * NNNNNNNNNNNNN\n */\nEEEEEEEEEEE\n' ]


Почему так? Что с этим делать?

Добавлено:
Получилось! Спасибо Вам! Остался ещё один вопрос, но я сейчас поэкспериментирую и потом спрошу.

Последний раз редактировалось riva, 07.08.2014 в 15:29.
Ответить с цитированием