Показать сообщение отдельно
  #7 (permalink)  
Старый 25.06.2019, 10:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

alex-romanov, пишешь много, но не особо проясняешь ситуацию...

Вот сделал набросок по проблеме как я ее понял и описал выше.

var str='[ ] x ] x]';
var re=/\[|\]/;
var arr=[];
test(str);
alert(str+'\n'+arr);
str='[ x] x] [ x]x ]';
arr=[];
test(str);
alert(str+'\n'+arr);
function test(Str){
	ok(Str);
	var n=Str.split(re).length-1;
	var str;
	for (var i=0; i<n; i++) {
		str=del(Str,i);
		if (re.test(str)) {
			test(str);
		};
	};
};
function del(Str,Pos) {
	var str=Str.replace(/\[|\]/g,'|');
	var pos=0;
	var d=0;
	for (var i=0; i<Pos+1; i++) {
		pos=str.indexOf('|',pos+d);
		if (pos==-1) {
			return Str;
		};
		d=1;
	};
	str=Str.substring(0,pos);
	str+=Str.substring(pos+1);
	return str;
};
function ok(Str){
	if (arr.indexOf(Str)!=-1) {
		return false;
	};
	var val;
	var a=0;
	var b=0;
	for (var i=0;i<Str.length; i++) {
		val=Str.charAt(i)
		if (val=='[') {
			a++;
		};
		if (val==']') {
			b++;
		};
		if (b>a) {
			return false;
		};
	};
	if (a!=b) {
		return false;
	};
	arr[arr.length]=Str;
	return true;
};


Что в итоге нужно тебе, я так и не понял...
Ответить с цитированием