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' ]
Почему так? Что с этим делать?
Добавлено:
Получилось! Спасибо Вам! Остался ещё один вопрос, но я сейчас поэкспериментирую и потом спрошу.