| 
	| 
	
	| 
		
	| 
			
			 
			
				22.01.2013, 15:49
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 07.02.2012 
						Сообщений: 14
					 
		
 |  |  
	| 
				Regexp обрезать короткие слова
			 Добрый день. 
Пытаюсь с помощью regexp вырезать из строки все слова, длина которых меньше 3х символов, а так же все символы, в общем должны остаться в идеале буквы и цифры =) 
В данный момент проблема решается таким образом:
 
"А б,в гд?е ж-з и !кл мно п(р_с)т".replace(/[^A-Za-zА-Яа-я0-9 ]/ig , "").match(/[A-Za-zА-Яа-я0-9]{3,}/ig).join(" ")
Есть ли способ более изящный и короткий? |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 16:20
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 28.02.2011 
						Сообщений: 351
					 
		
 |  |  
	| Не совсем понятно что считать словами. В вашем примере"А б,в гд?е ж-з и !кл мно п(р_с)т"
 из гд?е сначала удаляется вопрос, и получается слово длиной 3 буквы. Так и должно быть?
 Кста, если в самом выражении уже есть и большие и маленькие буквы, зачем флаг i?
 			 Последний раз редактировалось rgl, 22.01.2013 в 16:34.
 |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 16:32
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 07.02.2012 
						Сообщений: 14
					 
		
 |  |  
	| Да, сначала строка чистится от всего лишнего, потом отбираются необходимые слова |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 16:42
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 28.02.2011 
						Сообщений: 351
					 
		
 |  |  
	| replace( /[^A-Za-zА-Яа-я1-9]+([A-Za-zА-Яа-я1-9]{1,2}[^A-Za-zА-Яа-я1-9]+)*/g, " " )З.Ы.
 Сорри, написал раньше, чем прочитал предыдущее сообщение, ща поправлю
 З.Ы.2
 Если так?
 replace(/[^A-Za-zА-Яа-я0-9 ]/g , "").replace( /[^A-Za-zА-Яа-я1-9]+([A-Za-zА-Яа-я1-9]{1,2}[^A-Za-zА-Яа-я1-9]+)*/g, " " )
 			 Последний раз редактировалось rgl, 22.01.2013 в 16:48.
 |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 16:47
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| 
str="А б,в гд?е ж-з и !кл мно п(р_с)т"
str=(' '+str).split(/(?:\s|,)\S{1,2}(?=\s|,)/i).join('');
alert(str)
			 Последний раз редактировалось Deff, 22.01.2013 в 22:10.
 |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 17:34
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| 
	
 
	| Сообщение от Дзен-трансгуманист |  
	| /^[\+\-]?[0-9a-fA-F]+$/.test( string ); |  
	
 Вроде Да, (*если только  hex всегда идет от начала строки
 
так чуть проще
 
var string ='+DD345435'
alert(/^[\+\-]?[0-9A-F]+$/i.test( string ))
			 Последний раз редактировалось Deff, 22.01.2013 в 17:52.
 |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 17:42
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Дзен-трансгуманист,
  
alert(/^[+-]?[\da-f]{1,6}$/i.test( "+ddd" ));
 |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 17:50
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 28.02.2011 
						Сообщений: 351
					 
		
 |  |  
	| 
	
 
	| Сообщение от рони   |  
	| Дзен-трансгуманист, 
 
alert(/^[+-]?[\da-f]{1,6}$/i.test( "+ddd" ));
 |  
	
 Все правильно, 0-9 можно заменить на \d плюс внутри кв.скобок маскировать не надо, минус не надо если он первый или последний, только не понятно почему {1,6 }, разве цифр не может быть больше шести? Чтобы записать тридцатидвухбитное число, уже нужно 8 цифр, а ведь бывают и 64-битные |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 18:42
			
			
			
		 |  
	| 
		
			|  | junior       |  | 
					Регистрация: 29.11.2011 
						Сообщений: 3,924
					 
		
 |  |  
	| 
	
 
	| Сообщение от rgl |  
	| replace(/[^A-Za-zА-Яа-я0-9 ]/g , "").replace( /[^A-Za-zА-Яа-я1-9]+([A-Za-zА-Яа-я1-9]{1,2}[^A-Za-zА-Яа-я1-9]+)*/g, " " ) |  
	
 буквы ё  в русском языке больше нет?
 
	
 
	| Сообщение от Deff |  
	| /^\S{1,2}(?=\s|,)|(?:\s|,)\S{1,2}(?=\s|,)/i |  
	
 игнор кейс к чему? )
 
	
 
	| Сообщение от Дзен-трансгуманист |  
	| Мне нужно проверить, состоит ли строка полностью из hex-символов (как минимум из одного из них) |  
	
 но при этом данная рега не гарантирует ее валидность
 
	
 
	| Сообщение от rgl |  
	| Все правильно, 0-9 можно заменить на \d |  
	
 
	
 
	| Сообщение от Дзен-трансгуманист |  
	| допускаются только ASCII |  
	
 
	
 
	| Сообщение от Дзен-трансгуманист |  
	| А это не захватит другие цифры юникода? |  
	
 захватит
 
	
 
	| Сообщение от Дзен-трансгуманист |  
	| простите за мое нубство в регах |  
	
 вот мы и нащупали его слабое место  
				__________________Чебурашка стал символом олимпийских игр. А чего достиг ты?
 Тишина - самый громкий звук
 |  |  
	| 
		
	| 
			
			 
			
				22.01.2013, 20:56
			
			
			
		 |  
	| 
		
			|  | junior       |  | 
					Регистрация: 29.11.2011 
						Сообщений: 3,924
					 
		
 |  |  
	| 
	
 
	| Сообщение от Дзен-трансгуманист |  
	| А можно поподробнее? |  
	
 поторопился. Был не прав. Все нормально )
				__________________Чебурашка стал символом олимпийских игр. А чего достиг ты?
 Тишина - самый громкий звук
 |  |  |  |