 
			
				25.06.2013, 21:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2013 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Строка в массив по регулярному выражению
			 
			
		
		
		
		Дорогие профи, помогите разобраться, никак не получается. 
 
Дано строка: 
 
":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:" 
 
Нужно разделить строку на массив, чтобы получилось так: 
 
arr[0]=":11:"; 
arr[1]="Привет, как дела?"; 
arr[2]=":02:"; 
arr[3]=":05:"; 
arr[4]="Всё хорошо, пока!"; 
... 
arr[n]=":14:"; 
 
Чтобы потом каждый элемент массива уже обработать по своему. Заменить ":число:" на нужные смайлы с картинкой. В голову приходит только этот варинат: 
 
str=":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:"; 
reg=/(:{1}\d{2}:{1})/gi; 
list=str.split(reg); 
 
Получаю массив, того что нужно, но это не работет  в IE. Какие ещё есть другие варинанты (кроссбраузерные), для решения данной задачи? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.06.2013, 22:08
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		чем match не устроил 
var str = ":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:";
var reg = /(:\d+:)/g;
var list = str.match(reg);
alert(list);
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.06.2013, 22:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 без статуса 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.05.2012 
					
					
					
						Сообщений: 8,219
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var str=":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:"
var arr = str.replace(/^:|:$/gim,'').split(/:+/);
alert(arr.join(',\n'))
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.06.2013, 23:04
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2013 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Deff, спасибо! Именно то что нужно. Столько времени мучался, никак не выходило, надо было раньше спросить   
В варианте у bes, выводились только цифры, мне нужно было с текстом... У меня тоже так получалось, текст пропадал...  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.06.2013, 23:08
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Pegas12345
			
		
	 | 
 
	| 
		В варианте у bes, выводились только цифры, мне нужно было с текстом... У меня тоже так получалось, текст пропадал...
	 | 
 
	
 
 ты ж написал 
 
	
 
	| 
		
			Сообщение от Pegas12345
			
		
	 | 
 
	| 
		Чтобы потом каждый элемент массива уже обработать по своему. Заменить ":число:" на нужные смайлы с картинкой.
	 | 
 
	
 
 зачем тебе лишний текст, да и сам массив собственно  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.06.2013, 11:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2013 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		зачем тебе лишний текст, да и сам массив собственно
	 | 
 
	
 
 я получаю данные по ajax запросу в xml формате, и чтобы после вставить в окно чата сообщение,  ДОМ, нужно создать элементы, текст или картинка. Вот и обхожу массив, и если картинка создаю объект картинка, если текст, то текст, а после встраиваится уже готовое сообщение в конец div-а.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.06.2013, 20:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Pegas12345
			
		
	 | 
 
	| 
		я получаю данные по ajax запросу в xml формате, и чтобы после вставить в окно чата сообщение, ДОМ, нужно создать элементы, текст или картинка. Вот и обхожу массив, и если картинка создаю объект картинка, если текст, то текст, а после встраиваится уже готовое сообщение в конец div-а.
	 | 
 
	
 
 приведи пример получаемого xml, так как ты привёл только строку, в которой хml и не пахнет 
не обязательно делать нечто вроде 
 
<script>
window.onload = function () {
	var img;
	document.body.appendChild(img = new Image(100, 100));
	img.src = "http://javascript.ru/forum/images/ca_serenity/misc/logo.gif";
	document.body.appendChild(img = new Image(100));
	img.src = "http://javascript.ru/forum/image.php?u=19820&dateline=1334914235";
}
</script>
чтобы собрать, по сути, текстовое сообщение  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.06.2013, 16:56
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2013 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Да нет, строка точно xml, просто я уже тут в примере только просто текстом написал, а так полученные данные приходя в виде: 
	
 
	| 
		 Код: 
	 | 
 
	<mesg num='' color='' from='' to=''>текст сообщения</mesg>  | 
 
	
 
 
вот "текст сообщения" и обрабатываю. Уже сделал, всё работатет    Только IE замучал со своими заморочками...    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.06.2013, 21:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Pegas12345
			
		
	 | 
 
	| 
		Да нет, строка точно xml,
	 | 
 
	
 
 ой не факт
 
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<mesg num='' color='' from='' to=''>текст сообщения</mesg>
<mesg num='' color='' from='' to=''>текст сообщения</mesg>
<button class="but">click</button>
<script>
jQuery(function ($) {
	$(".but").on("click", function () {
		alert($("mesg").text());
	});
});
</script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось bes, 27.06.2013 в 21:29.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |